sha1 - 我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。密钥大小错误
问题描述
我正在使用 C# 编写 3DES(使用 SHA1 HASH)加密算法。以下代码的 tdes.Key = keyArray 中的大小错误。我不知道出了什么问题。
公共静态字符串加密(字符串 toEncrypt,bool useHashing)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
// Get the key from config file
string key = (string)settingsReader.GetValue("SecurityKey", typeof(String));
//System.Windows.Forms.MessageBox.Show(key);
if (useHashing)
{
SHA1CryptoServiceProvider objSHA1CryptoService = new SHA1CryptoServiceProvider();
keyArray = objSHA1CryptoService.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
objSHA1CryptoService.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
}
解决方案
推荐阅读
- flutter - FloatingActionButton onPressed 未触发
- c - 读取键值对的 fscanf 问题
- python - 使用一个 glob.glob 而不是多个 glob.glob
- sql - 根据列中的日期值排除日期
- android - TextView:删除顶部和底部的间距和填充
- python - 是否可以使用 numpy 计算递归数据
- web - 将旧的 http 单页重定向到全新的 https 域的正确方法是什么?
- python - Django 2.1.4 注册表+登录页面
- django - Docusign API:标签错误地应用于其他文档和字段
- c# - 如何在 Unity 的固定对撞机数组中随机实例化预制件?