用JavaScript加密字符串并用Java解密

问题描述 投票:4回答:3

我想知道是否有人知道任何库可以使用javascript进行加密并使用java进行解密。我已经尝试了许多API,但是在Java中并没有得到相同的值。我想要公私钥加密,因此尝试使用RSA。我很少使用:

  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页面的字符集设置为utf-8,但也无法正常工作。我成功地加密了像'K'这样的单个字符串以正确地进行加密和解密,这使我认为将javascript中的字符串分成小块进行加密是有问题的(我检查过,但是将其加密为a失败了)整个)。

我的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);
}

请让我知道是否有可能,因为我已经搜索了很多问题(在stackoverflow本身中,但是找不到解决方案。

java javascript cryptography public-key-encryption
3个回答
1
投票

尝试使用乱码AES(JS库)https://github.com/mdp/gibberish-aes/


1
投票

RSA是一种关键的传输机制。您可以使用它来加密对称算法的密钥。据我所见,将它用于其他任何用途的人都不知道他们在做什么,如果他们坚持下去,最终将建立一个毫无价值的加密系统。

我已经成功地在Java和Stanford Javascript Crypto Library.之间进行了互操作,还有许多其他很好的JavaScript库用于对称加密算法。


0
投票

嗨,我想出了解决方案。在javascript中,第一个字符由于被加密而被跳过,从而导致了问题。修复了循环。感谢您的所有答复。

© www.soinside.com 2019 - 2024. All rights reserved.