繁体   English   中英

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

[英]RSA Encrypt and Decrypt between JS and Python(pycrypto)

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

但是,当我用JS解密来自JS的密文时,它有虚拟文本。 我不知道他们为什么。

所以,我想要没有虚拟的明文。(例如测试)

  1. 在Python中创建密钥对。

     key = RSA.generate(1024) #(publicKey, privateKey) 
  2. 保存模数,JS中的指数和加密“测试”

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

    结果(十六进制字符串):d0ab7e22f92adcca7182e3c622b513382d163033df5ca0f3c0327e8a1774258800ae57dfc98522f5ed40a4bed2f4b54f46ea800ff1ef522b104b0f874a598f6bbcf5453506f8bf2f8aa3b04b0c73f0018564707304b3a059326d51945d3ff0282d63c2c4c1ea6ba5a2172af83ef8bdc1d104a8d67ba95ee97ab89b36cd5c34d4

  3. 在Python中使用PrivateKey解密

     key.decrypt(above_result.decode('hex')) 

    结果:\\ 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 \\ XE6 \\ XC6 \\ XCF ^ \\ X92 \\ XA2 \\ xe2X \\ XE4 \\ XAF | \\ x8aS \\ XFE \\ XD3 \\ X84)\\ XC3 \\ X82 \\ XDC \\ XD1 \\ 0x7F部分\\ 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 测试

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

我一直在使用JSEncrypt JavaScript文件之间的JavaScript和Python的使用,实现对话pycrypto在JavaScript中,它使用一个随机垫的功能在加密过程中却pkcs1pad2它需要被删除,它开始工作。 这是一个黑客,但它成功了。 以下是从function pkcs1pad2(s,n)注释掉的行

 while(n > 2) { // random non-zero pad
    x[0] = 0;
    while(x[0] == 0) rng.nextBytes(x);
    ba[--n] = x[0];
  }

  ba[--n] = 2;
  ba[--n] = 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM