C# AES解密的前16个字节是垃圾
我试图用C语言复制这个Javascript# 但是使用下面的代码,解密字符串的前16个字节是垃圾(但对于相同的输入总是相同的)C# AES解密的前16个字节是垃圾,c#,aes,C#,Aes,我试图用C语言复制这个Javascript# 但是使用下面的代码,解密字符串的前16个字节是垃圾(但对于相同的输入总是相同的) Javascript输出:https://lh3.googleusercontent.com/9xsACLpNPipRFBrSZ8FOXSTa4YkrI2p3vxpBPTV2tzBZ6tYUCtLk-0lOcFg9y5f_thL8wlqMnQ=m37?&jparams=ODcuMjU0LjczLjE3Nw&upx=TW96aWxsYS81LjAgKFdpbmRvd3Mg
Javascript输出:https://lh3.googleusercontent.com/9xsACLpNPipRFBrSZ8FOXSTa4YkrI2p3vxpBPTV2tzBZ6tYUCtLk-0lOcFg9y5f_thL8wlqMnQ=m37?&jparams=ODcuMjU0LjczLjE3Nw&upx=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc3LjAuMzg2NS45MCBTYWZhcmkvNTM3LjM2#betaHost"
C#输出:“$NN尝试将IV解码为字节数组。您需要正确处理整数的字节顺序
iv = CryptoJS.enc.Hex.parse(bkZ)
key = CryptoJS.SHA256(skH)
function ovelDecrypt(data)
{
var ret = null;
try
{
var contentCiphertext = CryptoJS.lib.CipherParams.create(
{
ciphertext : CryptoJS.enc.Base64.parse(data)
});
var decrypted = CryptoJS.AES.decrypt(contentCiphertext, key,
{
mode : CryptoJS.mode.CBC,
iv : iv,
padding : CryptoJS.pad.Pkcs7
});
ret = decrypted.toString(CryptoJS.enc.Utf8);
}
catch(ShowMsg)
{
alert(ShowMsg")
}
return ret;
};
private static string bkZ = "a5e8d2e9c1721ae0e84ad660c472c1f3";
private static string skH = "nnsdfb23nmasdl047sm"; //For testing only
private static string ovelDecrypt(string cipherText)
{
//Generate the initialization vector
int[] iv = new int[4];
for (int i = 0; i < 4; i++)
iv[i] = (~Convert.ToInt32(bkZ.Substring(i * 8, 8), 16) + 1) * -1;
//Generate the key
byte[] key;
using (SHA256 sha256Hash = SHA256.Create())
key = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(skH));
using (RijndaelManaged rijndael = new RijndaelManaged())
{
int CHUNK_SIZE = 128;
rijndael.Mode = CipherMode.CBC;
rijndael.Padding = PaddingMode.PKCS7;
rijndael.KeySize = CHUNK_SIZE;
rijndael.BlockSize = CHUNK_SIZE;
rijndael.Key = key;
rijndael.IV = iv.SelectMany(BitConverter.GetBytes).ToArray();
ICryptoTransform transform = rijndael.CreateDecryptor();
byte[] cipherbytes = Convert.FromBase64String(cipherText);
byte[] decryptedOutput = transform.TransformFinalBlock(cipherbytes, 0, cipherbytes.Length);
return Encoding.UTF8.GetString(decryptedOutput);
}
}
iCY+Oars3gD/TDBMDoUyPxbRAglekyv7MdNW9I/lV1uUu88F3KISPhQi0NHwVO6DzFEGsf8MPxCZpTTWSCeaytYWb/K/f7cGyb7BlhgmRzksApDdMDC62kwh5ato5VShfOUd2VeD0YENCRQ79HpVSDd5ibtuNd2UqANsGw85leEo4kVKzL06RmRe6VY43iqV+/bxNt1BPzaaENKkcIat7fYeid5vBFcWsVU8oM0vr0lgTlGXZqstSWQcuMmLXQy5becJtQ+Bkj5obPpW+kC0FHLJJsoS/ZAd/aaSWfRzzo9nfEE1YPgPRa1C3qufHiBBn6jU2YC2cN591nlas5QurJQ3PBgBR/rEcoqk61/R+Qr8bBaMNT1C3j9aYIrVmg3q74RKOJWRkCMije1+EtwHMf/O49TMiQOu7I9VIJmheXc=
Javascript output: "https://lh3.googleusercontent.com/9xsACLpNPipRFBrSZ8FOXSTa4YkrI2p3vxpBPTV2tzBZ6tYUCtLk-0lOcFg9y5f_thL8wlqMnQ=m37?&jparams=ODcuMjU0LjczLjE3Nw&upx=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc3LjAuMzg2NS45MCBTYWZhcmkvNTM3LjM2#betaHost"
C# output: "$NN<RRG???P??Pleusercontent.com/9xsACLpNPipRFBrSZ8FOXSTa4YkrI2p3vxpBPTV2tzBZ6tYUCtLk-0lOcFg9y5f_thL8wlqMnQ=m37?&jparams=ODcuMjU0LjczLjE3Nw&upx=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc3LjAuMzg2NS45MCBTYWZhcmkvNTM3LjM2#betaHost"