RSA ในจาวาสคริปต์แตกต่างจาก 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