JS和Python之间的RSA加密和解密(pycrypto)

yum*_*ere 5 javascript python rsa pycrypto jsbn

我从JS RSA库(http://www-cs-students.stanford.edu/~tjw/jsbn/)加密纯文本,然后从python Crypto.PublicKey解密。

但是,当我使用python从JS解密密文时,它具有伪文本。我不知道为什么。

因此,我想要没有伪内容的明文。(例如测试)

  1. 在Python中制作密钥对。

    key = RSA.generate(1024) #(publicKey, privateKey)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 保存模数,JS中的指数并加密“测试”

    var rsa = new RSAKey();
    rsa.setPublic(modulus, exponent); //modulus and exponent hex string
    rsa.encrypt("test");
    
    Run Code Online (Sandbox Code Playgroud)

    导致(十六进制字符串):d0ab7e22f92adcca7182e3c622b513382d163033df5ca0f3c0327e8a1774258800ae57dfc98522f5ed40a4bed2f4b54f46ea800ff1ef522b104b0f874a598f6bbcf5453506f8bf2f8aa3b04b0c73f0018564707304b3a059326d51945d3ff0282d63c2c4c1ea6ba5a2172af83ef8bdc1d104a8d67ba95ee97ab89b36cd5c34d4

  3. 在Python中使用PrivateKey解密

    key.decrypt(above_result.decode('hex'))
    
    Run Code Online (Sandbox Code Playgroud)

    结果:\ x02 \ xf0 \ xae \ xafK \ xd3 \ x17 \ xfc \ xf4 \ xd6 \ xd9 = \ xee7 \ x04 \ x94 \ xea \ x9c \ xd8 \ xf7-\ x19 \ x05 $!'#\ xad \ x82'\ xfcKG \ xadK \ xb6_ \ xabMZ:\ x9dU \ xa4 \ xc0 [\ x8c \ xa6hC \ x93 \ xf7 \ xbc \ xf1:\ x9f \ x107D \ xe8 \ xfe \ x07R \ x8c \ xd7 \ xb3 \ xe xc6 \ xcf ^ \ x92 \ xa2 \ xe2X \ xe4 \ xaf | \ x8aS \ xfe \ xd3 \ x84)\ xc3 \ x82 \ xdc \ xd1 \ x7f \ xc9 \ x12 \ xd0 \ x94 \ xd2jS \ xee \ x83 \ xfda \ xc6 \ xc7d \ xdd \ x0b2 \ xe6 \ x1d \ x84 \ x0c \ x93 \ x8aK \ xc2 \ x10U \ xc0Y〜\ xbf \ x15 \ xfa \ x00 测试

Jam*_*olk 4

pycrypto rsa decrypt() 方法是一种低级方法,因此您将获得预期的输出,即 PKCS#1、版本 1.5、块类型 2 字节数组。由于您似乎发现这不方便,因此您应该遵循API 文档中的建议,而使用PKCS1_v1_5 模块