很多时候,我们需要访问一个页面或者方法,参数不得不放在url上 。 为了防止有人恶意修改ulr地址参数,我们可以使用MD5码加密。
MD5是非逆转的哦!
实现MD5码的步骤:
一. 需要引入命名空间:
using System.Security.Cryptography;
二. 代码
var str=" 需要加密字符串 " ;
MD5 md5 = new MD5CryptoServiceProvider();
string newP = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(str)), 4, 8);
newP = newP.Replace("-", "");
然后 newP就是加密后的字符串了。
我们可以用ajax把参数字符串传到一个方法进行加密, 然后返回加密过的参数(字符串),在把参数 和加密后的参数(字符串)都传递到需要访问的页面。
进入该页面, 因为md5加密是不能逆转的,所以我们可以把参数加密,然后和之前加密过的参数(字符串)进行对比。如果 != 那么就是地址栏参数被修改过。
/// <summary>
/// 将字符串进行MD5编码
/// </summary>
/// <param name="str">待编码的字符串</param>
/// <returns></returns>
public static string EncryptString(string str)
{
MD5 md5 = MD5.Create();
// 将字符串转换成字节数组
byte[] byteOld = Encoding.UTF8.GetBytes(str);
// 调用加密方法
byte[] byteNew = md5.ComputeHash(byteOld);
// 将加密结果转换为字符串
StringBuilder sb = new StringBuilder();
foreach (byte b in byteNew)
{
// 将字节转换成16进制表示的字符串,
sb.Append(b.ToString("x2"));
}
// 返回加密的字符串
return sb.ToString();
}