在做软件开发的过程中,必然会涉及到用户密码等关键信息的存储。在大多数的情况下,用户的密码是存储在数据库中的。如果不加任何保密措施,直接以明文形式保存的话,很容易造成用户个人信息的泄露,给企业和用户带来无法预估的损失。

目前,常用的密码加密存储算法有很多种,比如:MD53DESAESSHA1等。

今天我们主要来介绍一下MD5加密算法。

7-1538208060.jpeg

什么是MD5算法

MD5是一种用于产生数字签名的单项散列算法,它以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列处理,算法的输出由4个32位分组级联后生成一个128位散列值。

使用ASP.NET把密码字段值进行加密,代码如下:

using System.Security.Cryptograhoy;//引入MD5加密命名空间public string GetMD5(string strPwd){    //将要加密的字符串加上前缀与后缀后再加密    string cl = DateTime.Now.Month + strPwd + DateTime.Now.Day;    string pwd = "";    //实例化一个MD5对象    MD5 md5 = MD5.Create();    //加密后是一个字节类型的数组,要注意编码UTF8/Unicode等的选择    byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));    //翻转生成的MD5码    s.Reverse();    //通过循环,将字节类型的数组转换为字符串    //只取MD5码的一部分,这样恶意访问者无法知道取的是哪几位    for(int i = 3;i < s.Length-1; i++)    {        //将得到的字符串使用十六进制类型格式化。格式化后的字符是小写的字母,如果使用大写(X),则格式化后的字符是大写字母        //进一步对生成的MD5码做一些改造        pwd = pwd + (s[i] < 198 ? s[i] + 28 : s[i]).ToString("X");    }    return pwd;}

注意

如果单纯使用MD5算法生成的散列值,是可以被破解的。所以我们在实际开发过程中,需要使用MD5算法,结合加盐算法来生成无法破解的加密字符串。

更多相关文章

  1. c语言怎么用scanf输入字符串
  2. c语言实现删除字符串中的数字字符
  3. 字符串处理函数是什么
  4. c语言统计字符串中各个字符的个数
  5. c语言如何定义字符串数组
  6. c语言字符数组与字符串应用方法是什么?
  7. C语言怎么定义字符串数组
  8. C语言中的字符串比较函数是什么
  9. C语言中输出字符串用什么符号

随机推荐

  1. Android四大基本组件(Activity,Service,Cont
  2. android menu详解
  3. Android音量控制
  4. Android系统框架和开机流程
  5. 在Android上授权Adobe AIR应用程序
  6. 详解 Android 的 Activity 组件【Z】
  7. 随笔--android上遇到的易忽视的区别
  8. Android系统信息和安全机制
  9. Android 核心分析 之八Android 启动过程
  10. [Android] TextView实现走马灯效果