我有 Angular 中的数据加密代码,但我不知道如何在服务器端解密它。
角码
public static getEncryptedInfo(dataString): string {
let password = environment.encryptionKey;
var text = dataString.toString(CryptoJS.enc.Utf8)
var encrypted = CryptoJS.AES.encrypt(text, password).toString();
const encodedComponent = encodeURIComponent(encrypted).toString();
return encodedComponent;
}
使用加密密钥=12345
加密为
U2FsdGVkX19klqZyBO7JyNzfxCBxAizFPkVYX%2Bb%2BUNs%2FVGEcr%2Fcxz3JmQcEgiojQ
在 Angular 中,我将这个加密值传递到服务器端。
我尝试在 C# 中解密此参考,但出现错误
public static string Decrypt(string plainText)
{
RijndaelManaged aes = new RijndaelManaged();
string decodeString = System.Web.HttpUtility.UrlDecode(plainText);
var base64Decode = Encoding.UTF8.GetString(Convert.FromBase64String(decodeString));
// var inputArray = Convert.FromBase64String(decodeString);
ICryptoTransform AESDecrypt = aes.CreateDecryptor();
var de = AESDecrypt.TransformFinalBlock(base64Decode, 0, base64Decode.Length);
return encoding.GetString(de);
}
public static string DecryptText(string EncryptedText)
{
if (string.IsNullOrEmpty(EncryptedText))
{
return "";
}
else
{
RijndaelManaged aes = new RijndaelManaged();
string decodeString = System.Web.HttpUtility.UrlDecode(EncryptedText);
var base64Decode = Encoding.UTF8.GetString(Convert.FromBase64String(decodeString));
Byte[] outputBytes = StringToByteArray(base64Decode);
var bytesToDecrypt = Convert.FromBase64String(EncryptedText);
CryptoJS.AES.decrypt(encodedBytes, Secretkey).toString(CryptoJS.enc.Utf8)
var actualText = Encoding.UTF8.GetString(base64Decode);
var de = base64Decode.Substring(0, base64Decode.Length - DecryptionKey.Length);
return de;
}
}
我错过了什么吗?
我建议你看看这个https://dotnetfiddle.net/Y7TFl0 https://dotnetfiddle.net/Y7TFl0这个完美的加密和解密 C# 代码。
对于 JS 请检查这个https://stackblitz.com/edit/cryptojs-aes-encrypt-decrypt-vfr5py?file=index.js https://stackblitz.com/edit/cryptojs-aes-encrypt-decrypt-vfr5py?file=index.js
两者不同
我的 c# 代码是这样的
字符串密码=“12345”;
字符串数据 = 加密("[电子邮件受保护] /cdn-cgi/l/email-protection", pw);
string angularDecSring = "U2FsdGVkX19klqZyBO7JyNzfxCBxAizFPkVYX%2Bb%2BUNs%2FVGEcr%2Fcxz3JmQcEgiojQ";
string decodeString = HttpUtility.UrlDecode(angularDecSring);
Console.WriteLine("UrldecodeString: " + decodeString);
Console.WriteLine("decrypt Value:" + HttpUtility.UrlEncode(data));
Console.WriteLine("Decrypted: " + Decrypt(data, pw));
这是输出:
IV 字节数组:68 37 67 33 65 34 6D 33 74 35 73 74 35 7A 6A 77(大小:16)
块大小:128 位
UrldecodeString: U2FsdGVkX19klqZyBO7JyNzfxCBxAizFPkVYX+b+UNs/VGEcr/cxz3JmQcEgiojQ
解密值:IKVfDJLHlkrqoHNTYEabnkwwi8DiAKki4QZ6q9OndAA%3d
解密:[电子邮件受保护] /cdn-cgi/l/email-protection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)