【发布时间】:2019-10-09 12:00:35
【问题描述】:
我想用angular7实现同样的加密,
以下函数是用 C# 编写的,我尝试了 crypto-js,但它没有给我相同的结果。
使用 System.Security.Cryptography;
public static string Encrypt(string PlainText, string SecretKey)
{
try
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(PlainText);
var hashMD5 = new MD5CryptoServiceProvider();
keyArray = hashMD5.ComputeHash(UTF8Encoding.UTF8.GetBytes(SecretKey));
hashMD5.Clear();
var triDESProv = new TripleDESCryptoServiceProvider();
triDESProv.Key = keyArray;
triDESProv.Mode = CipherMode.ECB;
triDESProv.Padding = PaddingMode.PKCS7;
var cTransform = triDESProv.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
triDESProv.Clear();
string encText = Convert.ToBase64String(resultArray, 0, resultArray.Length);
return encText;
}
catch
{
return "ERROR";
}
}
【问题讨论】:
-
你是如何配置和使用crypto-js的?另外,为什么要使用 MD5 和 3DES?两者都被认为是不安全的。
-
你为什么要在客户端做这些事情?这是为了什么?在客户端这样做的问题是您将密钥暴露给您的客户端,这使得它对于阻止客户端的事情不是很有用。
-
tried crypto-js but its not giving me the same results也许你也可以分享JS代码,我们无法读取你的显示器。接下来 - 您使用的不是真正安全的参数 - 用于密钥拉伸的 MD5、带有部分密钥的 3DES、ECB 模式。认真考虑使用默认 TLS (https) 是否不能更好地满足您的要求 -
"SecretKey" 如果你在基于浏览器的 JS 代码中实现它,它将不再是一个秘密。这里的实际用例是什么?通常只使用 HTTPS 加密您的 连接 应该足以保护传输中的数据。
标签: javascript c# encryption angular7 md5