2012-07-31 50 views
3

我想知道是否有人知道任何庫在javascript中執行加密並在java中解密。我已經嘗試了很多API,但是在java中並沒有得到相同的值。
我想公私鑰加密,因此嘗試使用RSA。 幾個我已經使用是:我檢查在javascript中加密字符串和在java中解密

  1. http://www-cs-students.stanford.edu/~tjw/jsbn/
  2. http://ats.oka.nu/titaniumcore/js/crypto/readme.txt
  3. http://www.ohdave.com/rsa/

很少的事情,JavaScript的突破字符串成小塊,然後進行加密,這使得在Java中密文不同和JavaScript。我編輯的JavaScript代碼使用字符串作爲一個整體,但沒有奏效。

我也嘗試將html頁面的charset設置爲utf-8,但它也不起作用。 我成功地加密了像'K'這樣的單個字符串,並且正確地加密和解密,這讓我認爲在JavaScript中將字符串分成小塊(我檢查過,整個)。

我的Java實現:

BigInteger d = new BigInteger("1f3fac65c4ae222e3a3074dd4c38fbb72c0705c4bbac0385b867c12c25a44e01", 16); 
BigInteger e = new BigInteger("65537"); 
BigInteger N = new BigInteger("b42e91fbca364cf2a125aec67ffbdab624fd401100c40ea05189ba34d1028b0d", 16); 
String messageToEncrypt = "kishor"; 
byte [] messageByte = messageToEncrypt.getBytes(); 
BigInteger message = new BigInteger(messageByte); 
//Encrypting and Decrypting messages 
//Encrypt a message using N and e: 
BigInteger ciphertext = message.modPow(e, N); 
//Decrypt the message using N and d: 
BigInteger plaintext = ciphertext.modPow(d, N); 
byte[] plainTextByte = plaintext.toByteArray(); 
String decryptMessage = new String(plainTextByte); 
/*System.out.println("p : " + p); 
System.out.println("q : " + q);*/ 
System.out.println("N : " + N.toString(16)); 
System.out.println("e : " + e.toString(16)); 
System.out.println("d : " + d.toString(16)); 
/*System.out.println("PhiN : " + PhiN);*/ 
System.out.println("ciphertext : " + ciphertext.toString(16)); 
System.out.println("decryptMessage : " + decryptMessage); 
} 

請讓我知道,如果我已經搜查了許多問題(在計算器本身),但無法找到一個解決方案是可能的。

+0

那麼,你想在JS方加密並在java方解密?你如何將加密數據從一個傳遞給另一個? – maasg 2012-07-31 09:55:12

+0

密文將被傳遞,解密將使用私鑰。 – 2012-07-31 09:56:56

+0

你如何在javascript和java之間傳輸數據?你能展示Javascript方面嗎? – maasg 2012-07-31 09:59:50

回答

0

嘿,我想出瞭解決方案。在JavaScript中,第一個字符被加密導致問題。修復循環。感謝你的回覆。

+0

你可以在js和java方面發佈一個例子嗎? – 2013-11-05 09:13:24

+1

目前我沒有他們..但您可以使用以下任何一種方法1)http://www-cs-students.stanford.edu/~tjw/jsbn/ 2) http://ats.oka.nu/titaniumcore/js/crypto/readme.txt 3 ) http://www.ohdave.com/rsa/。他們包含js例子。 – 2013-11-05 14:15:38

+0

謝謝。我設法得到它的工作..我應該使decode64兩次 – 2013-11-05 14:25:16

0

RSA是最好的密鑰交換。根據我的經驗,使用它的人不知道他們在做什麼,如果他們堅持不懈,最終會建立一個毫無價值的加密系統。

我已經成功地在Java和Stanford Javascript Crypto Library.之間進行了互操作對於對稱加密算法,還有許多其他的優秀JavaScript庫。