RSA в javascript отличается от PHP

У меня сейчас проблема с RSA. У меня одинаковый модуль и показатель степени в Javascript и PHP. Оба используют PKCS#1 в javascript, я использую http://www-cs-students.stanford.edu/~tjw/jsbn/rsa.js

var rsa = new RSAKey();
rsa.setPublic("modulus","ex");
var result = rsa.encrypt(text);

а в PHP я использую http://phpseclib.sourceforge.net/

require_once 'Crypt/RSA.php';
$rsa = new Crypt_RSA();
$n="modulus";
$e="ex";
$rsa->modulus= new Math_BigInteger($n,16);
$rsa->publicExponent= new Math_BigInteger($e,16);
$key=$rsa->getPublicKey();
$rsa->loadKey($key);
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt("1234");
echo bin2hex($ciphertext);

Но 2 результата разные. Может ли кто-нибудь сказать мне причину. Большое тебе спасибо


person Summer Nguyen    schedule 24.07.2012    source источник


Ответы (1)


Они отличаются, потому что PKCS#1 использует рандомизированное заполнение.

Проверьте следующий URL-адрес:

http://www-cs-students.stanford.edu/~tjw/jsbn/rsa.html

Нажмите «Зашифровать» несколько раз. Результирующий зашифрованный текст будет каждый раз другим.

Важно то, что вы можете его расшифровать, а не то, что зашифрованный текст отличается.

person Community    schedule 26.07.2012
comment
Большое тебе спасибо. Я понимаю, это . - person Summer Nguyen; 16.09.2012
comment
А если серьезно, на самом деле не используйте заполнение PKCS#1. - person Scott Arciszewski; 06.03.2016