MD5(Message Digest --消息摘要算法)算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错),任何长度的任意内容都可以用MD5计算出散列值。主要作用是【验明“真身”】,字符串与文件均可。MD5多用于注册密码的加密。

MD5长度一般是32位的16进制数字符串,MD5值的个数是有限的,但是元数据是无限的,因此存在着不同的内容产生相同的内容产生相同MD5值的概率。因此MD5算法不可逆,也就是智能得到内容对应的MD5值,无法由MD5值反推内容,但是对不同的内容产生的MD5值的概率非常非常非常低。

asp.net中MD5的使用思维:

1.创建一个计算MD5值的对象

2.调用该对象的方法进行MD5计算

3.把结果以字符串的形式返回

asp.net中MD5加密的具体实现(字符串和文件):

 /// <summary>
/// 字符串的MD5加密
/// </summary>
/// <param name="strSource">要加密的字符串</param>
/// <returns>返回32位加密的字符串</returns>
public static string GetMd5String(string strSource)
{
StringBuilder sb = new StringBuilder();
//1.创建一个计算md5值的对象
using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
{
byte[] byteResult =System.Text.Encoding.Default.GetBytes(strSource); //2.调用该对象的方法进行MD5计算
byte[] md5Byte= md5.ComputeHash(byteResult); //3.把结果以字符串的形式返回
for (int i = ; i < md5Byte.Length; i++)
{
//"x"表示转换为小写的十六进制的,"X"大写的十六进制的
sb.Append(md5Byte[i].ToString("x2"));
}
}
return sb.ToString();
}

字符串MD5加密源码

  /// <summary>
/// 文件的MD5加密
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>返回的md5加密了的32位字符串</returns>
public static string GetMd5StringFromFile(string filePath)
{
StringBuilder sb = new StringBuilder();
using (System.Security.Cryptography.MD5 md5=System.Security.Cryptography.MD5.Create())
{
using (System.IO.FileStream fs=System.IO.File.OpenRead(filePath))
{
byte[] md5Byte = md5.ComputeHash(fs);
for (int i = ; i < md5Byte.Length; i++)
{
sb.Append(md5Byte[i].ToString("x2"));
}
}
}
return sb.ToString();
}

文件MD5加密源码

注意:创建对象时用不用using自动释放内存,看这个类(或其父类)是否继承IDisposable接口。

MD5加密学习的更多相关文章

  1. C# Winform MD5加密学习积累

    string password = txtPassword.Text.Trim(); byte[] result = Encoding.Default.GetBytes(password); MD5 ...

  2. 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)

    最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...

  3. IOS开发-OC学习-MD5加密

    MD5的全称是Message-Digest Algorithm 5. MD5加密算法为现在应用最广泛的哈希算法之一,该算法广泛应用于互联网网站的用户文件加密,能够将用户密码加密为128位的长整数.数据 ...

  4. 基础学习14天 MD5加密

    private static string GetMD5(string str) { //创建MD5对象 MD5 md5 = MD5.Create(); //字符串类型转换Wie字节 byte[] b ...

  5. Spring-Security (学习记录五)--配置登录时,密码采用md5加密,以及获取登录信息属性监听同步自己想要的登录信息

    目录 1. PasswordEncoder 采用密码加密 2. 获取当前的用户信息 1. PasswordEncoder 采用密码加密 使用前面的例子.可以看出我们数据库密码是采用明文的,我们在登录的 ...

  6. day25 Pyhton学习 MD5加密.日志

    一.MD5加密 MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作 import ha ...

  7. IOS中把字符串加密/IOS中怎么样MD5加密/IOS中NSString分类的实现

    看完过后,你会学到: 1学习IOS开发中的分类实现, 2以及类方法的书写, 3以及字符串的MD5加密/解密. ---------------------------wolfhous---------- ...

  8. 简单讲解iOS应用开发中的MD5加密的相关使用<转>

    这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用,示例代码基于传统的Objective-C,需要的朋友可以参考下 一.简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POS ...

  9. wemall app商城源码android开发MD5加密工具类

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

随机推荐

  1. AOJ.865 青铜莲花池 (BFS)

    AOJ.865 青铜莲花池 (BFS) 题意分析 典型的BFS 没的说 代码总览 #include <iostream> #include <cstdio> #include ...

  2. Codeforces Round #508 (Div. 2) E. Maximum Matching(欧拉路径)

     E. Maximum Matching 题目链接:https://codeforces.com/contest/1038/problem/E 题意: 给出n个项链,每条项链左边和右边都有一种颜色(范 ...

  3. python测试rabbitmq简易实例

    生产者 import pika #coding=utf8 credentials = pika.PlainCredentials('guest', '密码') connection = pika.Bl ...

  4. Item27--优先考虑泛型方法

    类型推导:发生在以下三个地方.1.Java编译器根据泛型方法传入的参数,推导出具体的类型.2.Java编译器,根据泛型构造器传入的类型来推导出实际要构造的实例类型.3.Java编译器根据表达式的目标类 ...

  5. bzoj 2037: [Sdoi2008]Sue的小球——dp

    Description Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩 ...

  6. 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.

      继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.   https://www.evernote.com/shard/s227 ...

  7. 密码本(无bug版)

    main.cpp #include <stdio.h> #include <stdlib.h> #include "data.h" #include &qu ...

  8. chrome最小字体12px如何修改

    在html标记样式里加入 <style> html { -webkit-text-size-adjust:none } </style> 这样的方式可以设置chrome字体小于 ...

  9. 如何使用webpack打包你的项目

    webpack是前端开发中比较常用的打包工具之一,另外还有gulp,grunt.之前没有涉及过打包这块,这里介绍一下使用webpack打包的流程. Grunt和Gulp的工作方式是:在一个配置文件中, ...

  10. 总有你要的编程书单(GitHub )

    目录 IDE IntelliJ IDEA 简体中文专题教程 MySQL 21分钟MySQL入门教程 MySQL索引背后的数据结构及算法原理 NoSQL Disque 使用教程 Neo4j .rb 中文 ...