.net中获取MD5码

什么是MD5码?

  MD5中的MD代表Message Digest,就是信息摘要的意思,不过这个信息摘要不是信息内容的缩写,而是根据公开的MD5算法对原信息进行数学变换后得到的一个128位(bit)的特征码。其经MD2、MD3和MD4发展而来。

为什么要用MD5码。

  在解决这个问题的时候,我们先看一下“小栗子”。
  例如我有一段秘密的文字如:”My Secret Words”,经算法变换后得到MD5码(b9944e9367d2e40dd1f0c4040d4daaf7),把这个码告诉其他人,他们根据这个MD5码是没有系统的方法可以知道你原来的文字是什么的。
  其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,例如”ABC” MD5(902fbdd2b1df0c4f70b4a5d23525e932)和”ABC “(多了一空格)MD5(12c774468f981a9487c30773d8093561)差别非常大,而且之间没有任何关系,也就是说产生的MD5码是不可预测的。
  最后由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。

有什么特点。

  • 不可逆
  • 不可预测
  • 高度离散型
  • 有128位长

经常在什么地方用

  正是因为上面的所述的MD5码的特性。所以人们才可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等。

在.net平台如何用(C#为例)。

1、创建一个项目,创建项目是些简单的基本操作,这里就不做演示了。
2、创建好项目后,在窗体加入三个“textbox”控件,和一个“button”一个“textbox”做数据输入(txtdata),一个“textbox”做直接MD5加密后的MD5密文(txtdata_MD5),一个做调用方法加密后的密文(txtdata_function)。

这里写图片描述

3、双击button按钮,进入代码编辑界面。
4、首先引用using System.Security.Cryptography;
5、全部代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test_MD5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //获取原始字符串
            byte[] result = Encoding.Default.GetBytes(txtdata.Text.Trim());
            //实例MD5码对象
            MD5 md5 = new MD5CryptoServiceProvider();

            byte[] output = md5.ComputeHash(result);
            //txtdata_function.Text = BitConverter.ToString(output);   //未去掉中间“-”的MD5码
            txtdata_MD5.Text = BitConverter.ToString(output).Replace("-", "");//去掉中间“-”的MD5码
          //#############################调用MD5转换方法#################################

             txtdata_function.Text = MD5(txtdata.Text.Trim());
        }
        /// <summary>
        /// MD5码转换方法
        /// </summary>
        /// <param name="encryptString"></param>
        /// <returns></returns>
        public static string MD5(string encryptString)

        {
            byte[] result = Encoding.Default.GetBytes(encryptString);
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            string encryptResult = BitConverter.ToString(output).Replace("-", "");
            return encryptResult;

        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aiming66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值