gpt4 book ai didi

c# - 如何使用 JavaScript 解密 AesCryptoServiceProvider?

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:27 25 4
gpt4 key购买 nike

我正在使用 MSDN 中的 EncryptStringToBytes_Aes 方法使用像这样的自定义密码加密一些数据:

string original = "some data to encrypt";
byte[] encrypted;

using (AesManaged aes = new AesManaged())
{
// Prepare new Key and IV.
string passphrase = "somepassphrase";
byte[] saltArray = Encoding.ASCII.GetBytes("somesalt");
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(passphrase, saltArray);
aes.Key = rfcKey.GetBytes(aes.KeySize / 8);
aes.IV = rfcKey.GetBytes(aes.BlockSize / 8);

// Encrypt the string to an array of bytes.
encrypted = EncryptStringToBytes_Aes(original, aes.Key, aes.IV);

// Decrypt the bytes to a string.
string roundtrip = DecryptStringFromBytes_Aes(encrypted, aes.Key, aes.IV);

return Convert.ToBase64String(encrypted);
}

它有效(DecryptStringFromBytes_Aes 返回原始字符串)。

我的问题是,如果我在客户端也有相同的密码,如何使用 JavaScript 解密 encrypted?我尝试使用 CryptoJS解密但没有成功。数据在 web 服务中被加密,我尝试将它作为字节数组、字符串传递给 JS,尝试用各种编码对其进行编码,但无论我做什么,我都无法获得原始字符串。我在这里做错了什么,我该如何做?它甚至可以这样吗? saltArray 编码甚至自定义密码的使用是否会导致我出现问题?

例如,这是我的 JS 尝试之一(使用 base64 编码):

var decoded = CryptoJS.enc.Base64.parse(encrypted);
var decrypted = CryptoJS.AES.decrypt(decoded, "somepassphrase");

(编辑:我打算稍后实现随机盐,一旦我得到所有其他东西,因为这样更容易跟踪正在发生的事情)

最佳答案

尝试使用 Stanford Javascript Crypto Library。链接:http://crypto.stanford.edu/sjcl/

关于c# - 如何使用 JavaScript 解密 AesCryptoServiceProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095259/

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