0

我想用 Java 加密一个字符串并用 Javascript 解密它。我在javascript中尝试Crypto过,但解密不正确。在Javascript中解密最简单的方法是什么?

我使用了以下链接中的加密代码:

http://bryox.blogspot.in/2011/12/encrypt-and-decrypt-string-by-java.html

4

1 回答 1

0

在Javascript中解密最简单的方法是什么?

不安全。

或者,如果您正在寻找在 Java 和 Javascript 中安全加密/解密的最简单方法,您可能想看看libsodium ,它具有JavaJavaScript的绑定。

使用 LazySodium 在 Java 中进行加密

LazySodiumJava lazySodium = new LazySodiumJava(new SodiumJava());
SecretBox.Lazy secretBoxLazy = (SecretBox.Lazy) lazySodium;

Key key = lazySodium.cryptoSecretBoxKeygen();

String msg = "This message needs top security";
byte[] nonce = lazySodium.nonce(SecretBox.NONCEBYTES);
lazySodium.cryptoSecretBoxEasy(msg, nonce, key);

使用 Sodium-Plus 在 JavaScript 中解密

const {SodiumPlus, CryptographyKey} = require('sodium-plus');
let sodium;

async function decryptMessage(ciphertextHex, nonceHex, keyHex) {
    if (!sodium) sodium = await SodiumPlus.auto();

    let ciphertext = Buffer.from(ciphertextHex, 'hex');
    let nonce = Buffer.from(nonceHex, 'hex');
    let key = CryptographyKey.from(keyHex, 'hex');
    return sodium.crypto_secretbox_open(ciphertext, nonce, key);
}

decryptMessage(ciphertext, nonce, key).then((plaintext) => {
    console.log(plaintext.toString());
});
于 2019-11-01T21:16:02.870 回答