gpt4 book ai didi

JavaScript AES 加密显示针对 Java Android 的错误结果

转载 作者:行者123 更新时间:2023-12-04 10:14:47 25 4
gpt4 key购买 nike

我尝试在 JavaScript 中使用 AES 方法转换字符串,我只需要使用 CryptoJs 库来实现这一点。

当我从这个网站在线尝试时,结果正如我预期的那样,我的 Java 程序可以解密它,但是当我尝试 JavaScript 时,我得到的结果与我从网站上得到的结果不同。

这就是我需要的;

数据:{"test":1} secret :NdRgUkXp2s5v8y/A
结果应该是:chib8X9Fnr7Vtn4VLRybKg==
我引用该网站的原因,我不知道上述结果的模式和填充方法,但如果您知道上述结果的模式,则以下结果按预期从服务器显示,您也可以引用。

您可以使用 https://www.devglan.com/online-tools/aes-encryption-decryption 引用在线加密验证。

这是我使用错误的 JavaScript 时得到的结果;

var encrypted = CryptoJS.AES.encrypt('{"test",1}', "NdRgUkXp2s5v8y/A");
console.log(encrypted.toString())

结果: U2FsdGVkX1/GS5CecHJ10Z4qvSP8hY1NkDNtKGlg3OE=每次生成时它也会改变。

我使用这个库 https://cryptojs.gitbook.io/docs/

最佳答案

您将纯字符串值作为 secret 而不是 UTF-8 编码文本传递,并且您从上述网站获得的值使用 加密。 PKCS7 使用 的填充方法欧洲央行 模式。通常,这是大多数 Android Java 加密方法支持的方法。

加密使用 CryptoJS.pad.Pkcs7并确保您提供的 secret 信息为 UTF-8CryptoJS.enc.Utf8.parse(key)不是纯文本。

let data = '{"test":1}'
let key = 'NdRgUkXp2s5v8y/A'

var encrypted = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});

console.log(encrypted.toString());

解密方法
var decrypted = CryptoJS.AES.decrypt(encrypted.toString(), CryptoJS.enc.Utf8.parse(key), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})

console.log(decrypted.toString(CryptoJS.enc.Utf8))

下面的示例证明加密值符合预期。

let data = '{"test":1}'
let key = 'NdRgUkXp2s5v8y/A'

/*
* Encryption
*/
var encrypted = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});

console.log(encrypted.toString());

/*
* Decryption
*/
var decrypted = CryptoJS.AES.decrypt(encrypted.toString(), CryptoJS.enc.Utf8.parse(key), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})

console.log(decrypted.toString(CryptoJS.enc.Utf8) + "\n")
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>

关于JavaScript AES 加密显示针对 Java Android 的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61122873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com