您好我正在使用此加密方法来加密.net端的json值
public static string Encrypt256(string text)
{
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.BlockSize = 128;
aes.KeySize = 256;
aes.IV = Encoding.UTF8.GetBytes(AesIV256);
aes.Key = Encoding.UTF8.GetBytes(AesKey256);
aes.Mode = CipherMode.CBC;
byte[] src = Encoding.Unicode.GetBytes(text);
using (ICryptoTransform encrypt = aes.CreateEncryptor())
{
byte[] dest = encrypt.TransformFinalBlock(src, 0, src.Length);
Debug.WriteLine(Convert.ToBase64String(dest));
return Convert.ToBase64String(dest);
}
}
我试图在Node Js端解密它
var crypto = require('crypto'),
algorithm = process.env.tombalaCryptoAlgorithm,
password = process.env.tombalaHmacPass,
iv = '!QAZ2WSX#EDC4RFV'
function encrypt(text) {
var cipher = crypto.createCipheriv(algorithm, password, iv)
var encrypted = cipher.update(text, 'utf8', 'base64')
encrypted += cipher.final('base64');
return encrypted;
答案 0 :(得分:2)
您要将要加密的文字转换为Unicode
,这意味着UTF-16
。
在UTF-16中,每个字符由两个字节组成。如果没有使用第二个字节,则如您所见,它为空。
我假设你想要UTF-8
编码。因此,替换
byte[] src = Encoding.Unicode.GetBytes(text);
与
byte[] src = Encoding.UTF8.GetBytes(text);