1、先简单介绍一下什么是MD5
MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。
MD5具有很好的安全性(因为它具有不可逆的特征,加过密的密文经过解密后和加密前的东东相同的可能性极小),如果你的加密文件是一串消息字符串,没有特殊字符,很容易解密,如果是比较复杂的字符串文件,就很难解密了。附上接个免费界面地址:https://pmd5.com/
2、使用场景介绍
比如你要传送一个贵重的物品id给服务器,这时候对物品id进行加密,你可以传送一个id 和一个md5id,,服务器收到你的id之后,会根据你们双方月底的md5id加密算法进行加密,比如你们约定一个物品加密accesskey="access20191012key",那么md5id就可以调用GetMD5Hash(),参数strHash = id+accesskey,由于破解者,不知道accesskey,所有他加密的md5id可能和你们的不一样,服务器只需要验证id和md5id是否和服务器那边算出来的一样就行了。这样就可以防止重要数据被篡改。md5的值都是用来进行校验的,服务器也不需要界面md5,只需要按照同样的方式进行一次加密比较就可以了。一般在web开发通信中应用比较多。通常在传输重要信息时,url里面的内容都需要md5加密传输。服务器数据库存储用户名字和密码,一般存储的也是加密后的md5值,然后每次通过加密对比md5来确定密码是否正确。
using System.Security.Cryptography;
using System.Text;
void Start ()
{
string strHash= "HelloWorld";
Debug.Log(GetMD5Hash(strHash));
}
string GetMD5Hash(string strHash_)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.ASCII.GetBytes(strHash_);
byte[] encoded = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for(int i=0; i<encoded.Length; ++i)
{
sb.Append(encoded[i].ToString("x2"));
}
return sb.ToString();
}
网友评论