gpt4 book ai didi

javascript - JS 中的加密和 C# 解密 (CryptoJS)

转载 作者:行者123 更新时间:2023-11-30 15:50:06 30 4
gpt4 key购买 nike

我在 CryptoJS 上没有得到相同的结果。请您检查一下有什么问题吗?

这是我预期的输入/输出:

Encrypted String: 723024D59CF7801A295F81B9D5BB616E
Decrypted String: stackoverflow

这是我在 C# 中的解密/加密方法。加密是 TripleDES 模式 CBC,我在 CryptoJS 代码上使用相同的 key 和 iv。

public static string Encrypt(string data, string key, string iv)
{
byte[] bdata = Encoding.ASCII.GetBytes(data);
byte[] bkey = HexToBytes(key);
byte[] biv = HexToBytes(iv);

var stream = new MemoryStream();
var encStream = new CryptoStream(stream,
des3.CreateEncryptor(bkey, biv), CryptoStreamMode.Write);

encStream.Write(bdata, 0, bdata.Length);
encStream.FlushFinalBlock();
encStream.Close();

return BytesToHex(stream.ToArray());
}

public static string Decrypt(string data, string key, string iv)
{
byte[] bdata = HexToBytes(data);
byte[] bkey = HexToBytes(key);
byte[] biv = HexToBytes(iv);

var stream = new MemoryStream();
var encStream = new CryptoStream(stream,
des3.CreateDecryptor(bkey, biv), CryptoStreamMode.Write);

encStream.Write(bdata, 0, bdata.Length);
encStream.FlushFinalBlock();
encStream.Close();

return Encoding.ASCII.GetString(stream.ToArray());
}

这是我如何使用 CryptoJS 进行解密

var key = "90033E3984CEF5A659C44BBB47299B4208374FB5DC495C96";
var iv = "E6B9AFA7A282A0CA";

key = CryptoJS.enc.Hex.parse(key);
iv = CryptoJS.enc.Hex.parse(iv);


// Input is a Hex String
var decrypted = CryptoJS.TripleDES.decrypt('723024D59CF7801A295F81B9D5BB616E', key, { iv : iv, mode:CryptoJS.mode.CBC});
console.log(decrypted.toString());

最佳答案

CryptoJS 期望密文为 CipherParams 对象或 OpenSSL 编码的字符串。您已将密文作为十六进制传递。改为这样做:

var decrypted = CryptoJS.TripleDES.decrypt({
ciphertext: CryptoJS.enc.Hex.parse('723024D59CF7801A295F81B9D5BB616E')
}, key, {
iv : iv,
mode:CryptoJS.mode.CBC
});

decrypted 现在是一个 WordArray 对象。将其字符串化会生成默认编码为十六进制的字符串。如果您知道应该输出文本,则可以使用适当的编码,例如:

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

关于javascript - JS 中的加密和 C# 解密 (CryptoJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505636/

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