PLM之家PLMHome-工业软件践行者

MD5加密方法介绍

[复制链接]

2018-12-5 10:28:35 2229 0

Araser 发表于 2018-12-5 10:28:35 |阅读模式

Araser 楼主

2018-12-5 10:28:35

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。
8 h  n  ^% l( R* MMD5的用途主要有:
& x$ o1 w3 v- p+ j1 ^( Q( Y; C一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出1 g7 y$ {6 K7 c; G5 S' s
新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
2 l$ }; M3 |0 d. [+ k* ?数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。; {0 \! [, {( L" [
密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储& W6 L' ^% j% C; n$ x( e: W: e
明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。
对于密码存储,Asp.net的实现方法为:

8 C. c8 e, k% D0 e
[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)
' z) j, _+ b! k: E8 ~+ L        {; h: P: F) o  w  a& D0 R4 C
            string plainPassword = "innovator";, o- H* C1 |: \" J5 P; Q! v

) Y( u& D- V* f# B) S4 x1 X3 v            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
, E3 v+ \: j% D) s            System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();' w0 d1 b7 S, P; q0 [, F
            byte[] data = ascii.GetBytes(plainPassword);9 ?. k6 i, x7 {, E
            byte[] result = md5.ComputeHash(data);
. V% z$ K& m& Q8 u            // Convert the MD5 result to Hexadecimal string
* T+ Q6 F9 v6 C  m1 w! f' @: {: {6 M% @9 `. ^) u6 G8 ?3 A
            string MD5Password = BinaryToHex(result);
5 B2 u* `; O2 \' w- I            string aa = "";$ f! W1 Z3 V* R
        }[/mw_shl_code]

1 i2 D. C; Q# y
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
" v: e3 H4 @: m* D. G" b        {
7 h9 J6 R) w- M3 F* G7 ^# |" ]            string result = "";
  {# J* ^1 b" _$ [6 {            long lowerByte;
) o% e0 b* {, Q4 D( p' S% x            long upperByte;
9 v3 O& v. @$ @& X7 d  r9 N4 ]! Y. }$ n
            foreach (Byte singleByte in BinaryArray)/ a$ A( o) C& N7 n
            {0 ?! M) j, c4 }/ e
                lowerByte = singleByte & 15;7 B' U# k' t- N7 F5 c, i7 t6 B) l
                upperByte = singleByte >> 4;
4 c  \0 e0 O' I
9 C1 g1 J" S9 C                result += NumberToHex(upperByte);
/ {& y3 s( a  d  M/ B" O                result += NumberToHex(lowerByte);
$ o: |- i( d9 ?% }% m6 F0 F            }' x5 n+ e1 _8 o
            return result;% G7 C! k5 D+ z9 V. J. u' `
        }[/mw_shl_code]

) u8 F4 N9 }- a1 b& u
[mw_shl_code=csharp,true]private static char NumberToHex(long Number), \/ N# R; v, j5 D
        {
- ~6 c% u+ N' v            if (Number > 9)
6 _  ]4 J. W5 K% `0 W, P" \                return Convert.ToChar(65 + (Number - 10));& u/ P8 u, Z2 p  p
            else; h9 j: m& o, u
                return Convert.ToChar(48 + Number);! n5 G8 G  |- p4 v" U
        }[/mw_shl_code]
% ]) [& L9 j: [' u5 @! g
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了