Bonjour,
J'ai une problématique de cryptage via open SSL en PHP et VB.NET
Un bout de code valant mieux qu'un long discours ...
Génération des clés Publique et Prive en PHP
En résultat pour la clé publique j'ai dans le fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // 1024 bit rsa private key $privateKey = openssl_pkey_new(array( 'private_key_bits' => 1024, 'private_key_type' => OPENSSL_KEYTYPE_RSA, )); // sauvegarde de la clé privé openssl_pkey_export_to_file($privateKey, 'privateKey'); // Clé publique $keyDetails = openssl_pkey_get_details($privateKey); // Sauvegarde clé publique file_put_contents('publicKey', $keyDetails['key']);
Ou cela se complique c'est en VB.NET. J'ai essayé ce code mais hélas sans succès. Pas d'erreur au cryptage mais au décryptage en PHP pas de résultats.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD ..... k4Z7ppiVaPPBn s/36sdY12F/AX .... pQIYJXqY9kE5u3ZG8Oy0wl9 PA0pjGeZ ..... O/B0t+ETenrAtYONiGKE/f6d9F RBAUKU32pTs4B9FzQwIDAQAB -----END PUBLIC KEY-----
Aucune erreur cela crypte bien, sauf que lors du decrytage en PHP aucun résultats (la variable $sensitiveData2 est vide) et pas de message d'erreur !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Dim sReader As String = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD ..... k4Z7ppiVaPPBn ........ RBAUKU32pTs4B9FzQwIDAQAB" Dim PublicKey As Byte() = Encoding.UTF8.GetBytes(sReader) Dim Exponent As Byte() = {1, 0, 1} 'Create a new instance of RSACryptoServiceProvider. Dim RSA As New RSACryptoServiceProvider() 'Create a new instance of RSAParameters. Dim RSAKeyInfo As New RSAParameters() 'Set RSAKeyInfo to the public key values. RSAKeyInfo.Modulus = PublicKey RSAKeyInfo.Exponent = Exponent 'Import key parameters into RSA. RSA.ImportParameters(RSAKeyInfo) 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding() 'Create byte arrays to hold original, encrypted, and decrypted data. bytCipherText = ByteConverter.GetBytes("Data to Encrypt") bytCipherText = RSA.Encrypt(bytPlainText, False) sEncrypt = Convert.ToBase64String(bytCipherText)
Pour le test je copie dans la variable PHP $encryptedData1 le contenu de la variable VB sEncrypt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $privateKey = openssl_pkey_get_private('file://privateKey'); openssl_private_decrypt(base64_decode($encryptedData1), $sensitiveData2, $privateKey);
Toutes informations pouvant m'aider est la bienvenue !
Entre autre sur comment avoir un échange sécurisé entre PHP et .NET via openssl.
Merci
Partager