我们的用户使用准备好的超链接接收电子邮件。
此超链接有一个参数。
当用户点击超链接时,我需要确保用户没有篡改参数。
参数是一个简单的整数。
我应该用于此任务的当前.NET类是什么?
答案 0 :(得分:2)
最简单的方法是使用HMAC(“keyed-hash message authentication code”)。
public static string CreateHMAC(int data, byte[] key)
{
using(var hmac = new HMACSHA1(key))
{
var dataArray = BitConverter.GetBytes(data);
var resultArray = hmac.ComputeHash(dataArray);
return Convert.ToBase64String(resultArray);
}
}
您在服务器上保密key
,并将data
和CreateHMAC
的结果传递给网址中的用户。当用户单击该链接时,您将验证数据未被修改。
public static bool VerifyHMAC(int data, byte[] key, string verification)
{
using(var hmac = new HMACSHA1(key))
{
var dataArray = BitConverter.GetBytes(data);
var computedHash = hmac.ComputeHash(dataArray);
var verificationHash = Convert.FromBase64String(verification);
for (int i = 0; i < verificationHash.Length; i++)
{
if (computedHash[i] != verificationHash[i])
{
return false;
}
}
return true;
}
}
答案 1 :(得分:0)
您可以看到here如何计算哈希值。
由于HASH函数只接受ARRAYS,我建议你创建一个单项的数组,并带有你的整数。
您可以“签署”计算HASH的计算HASH高于PLUS的输入应用的常数(例如日期和小时)