2010-06-05 10 views
3

pourquoi le contenu de $ est-il crypté à chaque fois différent?Les données cryptées avec openssl_public_encrypt sont-elles différentes à chaque fois?

// aquire public key from server 
$server_public_key = openssl_pkey_get_public(file_get_contents("C:\publickey.pem")); 

// rsa encrypt 
openssl_public_encrypt("123", $encrypted, $server_public_key); 

aussi j'ai essayé un

$publicKey = "file://C:/publickey.pem"; 
$privateKey = "file://C:/privatekey.pem"; 
$plaintext = "String to encrypt"; 

openssl_public_encrypt($plaintext, $encrypted, $publicKey); 
$transfer = base64_encode($encrypted); 
openssl_private_decrypt($encrypted, $decrypted, $privateKey); 

echo $transfer; //encrypted string 

et le transfert de $ est à chaque fois une autre chaîne: ...

Z1xyMUquARxcGjqjjSHNAm41CnHI02GXxLyFivvta8YhDkhRJdD4i3kx + 8GElljdiSY/NMF9UD3ritWMLGmscdq/QyIf + geYxJFePNd1dNWg + V6zbAKRLaEpsU + aB87jiM/GjytLEkI63dku02BS0ZBgz9UZw/FDNaynV5bTTDM =

mRgLPsPtMoV9la7zzuU + cLzS5xMDp7QUmH6Iv4Sv4/FNjt62zcv9ZMWkfG3uVhS8Z1UDtGl + met1CYjBTcfjHCR6hahbwOkTCICXtkRQcc371vURW04XhQzMNgIIbvN5BBdmIyYI6alrS2vKUq7b3T0h8sJf36zh5CynYzyDCFU =

G5FhMoJGiUwEBvEOeZpDDrEXdxbWX5iaJ6F + VdYJ3CURPRMftskZNlDhat8gA5V0G + 3nXVQZptkHjxMkOqPlmwJHjgIqAiFppHLpEKohyT9qNwkAR00Y6PiWrNUJPiEIZqXHAb8TS0AA0Quhc0UAwcc + I8NGOD59k8BrZE6Z5Ew =

Répondre

5

L'algorithme de chiffrement PKCS # 1 utilise des graines au hasard pour rendre le chiffrement texte différent à chaque fois.

Ceci protège le texte chiffré contre plusieurs attaques, comme l'analyse de fréquence, la correspondance de texte chiffré. Par exemple, si vous utilisiez une clé publique pour chiffrer tout votre mot de passe sans aléa. Tout le même mot de passe donnera le même texte chiffré. Quelqu'un peut trouver tous les mots de passe populaires en vérifiant la fréquence du texte chiffré.

Pour le cryptage à clé symétrique, IV (vecteur initial) sert un objectif similaire.

+0

Est-il possible de déterminer la graine aléatoire et l'a envoyé à un autre algorithme de chiffrement pkcs # 1 qui l'utilisera pour déchiffrer certaines données chiffrées à partir du premier algorithme pkcs # 1? – panny

+2

@panny: veuillez lire la spécification PKCS # 1. Vous n'avez pas besoin de faire ce que vous demandez, le format PKCS # 1 permet de supprimer les bits aléatoires par le décrypteur sans les connaître à l'avance. Votre fonction de décryptage de Rsa le fait certainement pour vous. –

+0

Le chiffrement par clé symétrique n'a pas le même problème (de correspondance de texte chiffré), car avec un algorithme symétrique toute personne qui peut générer un texte chiffré pour un texte en clair candidat doit déjà avoir la clé. – caf