2010-06-05 1 views
3

Почему контент зашифрован каждый раз по-разному?Данные, зашифрованные с помощью openssl_public_encrypt, различны каждый раз?

// 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); 

также я попытался это один

$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 

и $ передача каждый раз другая строка: ...

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

mRgLPsPtMoV9la7zzuU + cLzS5xMDp7QUmH6Iv4Sv4/FNjt62zcv9ZMWkfG3uVhS8Z1UDtGl + met1CYjBTcfjHCR6hahbwOkTCICXtkRQcc371vURW04XhQzMNgIIbvN5BBdmIyYI6alrS2vKUq7b3T0h8sJf36zh5CynYzyDCFU =

G5FhMoJGiUwEBvEOeZpDDrEXdxbWX5iaJ6F + VdYJ3CURPRMftskZNlDhat8gA5V0G + 3nXVQZptkHjxMkOqPlmwJHjgIqAiFppHLpEKohyT9qNwkAR00Y6PiWrNUJPiEIZqXHAb8TS0AA0Quhc0UAwcc + I8NGOD59k8BrZE6Z5Ew =

ответ

5

Алгоритм шифрования PKCS # 1 использует некоторые случайные семена, чтобы сделать шифрованный текст каждый раз разные.

Это защищает шифрованный текст от нескольких атак, таких как частотный анализ, сопоставление зашифрованного текста. Например, если вы использовали открытый ключ для шифрования всего вашего пароля без случайности. Все тот же пароль даст один и тот же шифр-текст. Кто-то может выяснить все популярные пароли, проверив частоту шифрованного текста.

Для симметричного шифрования ключей для ИБ (начальный вектор) используется аналогичная цель.

+0

Можно ли определить случайное семя и отправить его другому алгоритму шифрования pkcs # 1, который будет использовать его для дешифрования некоторых данных, зашифрованных с первого алгоритма pkcs # 1? – panny

+2

@panny: прочитайте спецификацию PKCS # 1. Вам не нужно делать то, что вы просите, формат PKCS # 1 позволяет удалить случайные биты дешифратором, не зная их заранее. Функция rsa-дешифрования почти наверняка сделает это за вас. –

+0

Шифрование с симметричным ключом не имеет такой же проблемы (соответствия зашифрованного текста), поскольку с симметричным алгоритмом любой, кто может генерировать зашифрованный текст для открытого текста кандидата, должен иметь ключ. – caf