MD5

MD5介绍

MD5算法是一种散列算法,不是加密算法。
可以对字符串或文件进行md5计算,其实就是对byte(字节)进行md5计算,所以只要有字节就能计算md5散列值。
md5计算后的值,是一个散列值,是通过一种散列算法计算出来的,不是随机生成的。
同样一个值,只要采用相同的散列算法,那么每次计算出的散列值都是相等的。
只要内容出现了任何一个字节的变化,那么最终计算出的散列值就会完全不同。
md5散列算法每次计算出的值的长度是固定的(16个byte,转换为字符串后一般为32个字符)。
两个不同的值,计算出的md5散列值几乎是不同的。
md5无法根据已经计算出的散列值,反推算出原来的内容。
md5解密方式:穷举法

MD5的应用

数据库中的密码用明文存储很不安全,可以在存储密码的时候,将密码计算成md5值,数据库中存储的不是密码,而是一连串与密码对应的md5值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;//添加命名空间
using System.Text;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("请输入一个字符串");
                string msg = Console.ReadLine();
                string md5_value = GetMD5String(msg);
                Console.WriteLine(md5_value);
            }

        }

        //计算字符串的md5值
        private static string GetMD5String(string msg)
        {
            StringBuilder sb = new StringBuilder();
            //创建一个md5对象
            using (MD5 md5= MD5.Create())
            {
                //把字符串转换成byte[]
                byte[] buffers = Encoding.UTF8.GetBytes(msg);
                //进行md5计算,计算完毕后,返回的也是一个byte[]
                byte[] bytes = md5.ComputeHash(buffers);
                //释放资源
                md5.Clear();
                //把bytes转换成一个16进制的字符串
                for (int i = 0; i < bytes.Length; i++)
                {
                    sb.Append(bytes[i].ToString("x2"));
                }

            }
            return sb.ToString();
        }
    }
}

显示如下:
请输入一个字符串
123
对应的md5值为:202cb962ac59075b964b07152d234b70

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值