目标:
数据在网络上,可能会被拦截改动,因此我们需要加密、对比有没有被改动,确定我们发来的数据是原数据。
一、MD5验证
1、原理:
客户端A要发送数据给客户端B,线下约定好一个密钥。
网络上,客户端A把 数据 和 MD5(数据+密钥)算出来的验证码 发给客户端B。
客户端B接收到数据后,算出MD5验证码:接收到的数据+密钥,将该验证码与发来的验证码做对比。
若数据没被修改,算出的验证码会一致。
2、代码
private void Start()
{
string data = "hello world"; //数据
string key = "123"; //秘钥
Md5Sum(data + key); // 返回MD5验证码
}
public static string Md5Sum(string strToEncrypt)
{
// 将需要加密的字符串转为byte数组
byte[] bs = Encoding.UTF8.GetBytes(strToEncrypt);
// 创建md5 对象
System.Security.Cryptography.MD5 md5;
md5 = System.Security.Cryptography.MD5.Create();
// 生成16位的二进制校验码
byte[] hashBytes = md5.ComputeHash(bs);
// 转为32位字符串
string hashString = "";
for (int i = 0; i < hashBytes.Length; i++)
{
hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');
}
return hashString.PadLeft(32, '0');
}