簡體   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