PLM之家PLMHome-国产软件践行者

MD5加密方法介绍

[复制链接]

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

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

Araser 楼主

2018-12-5 10:28:35

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

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

x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。
# P" \" [6 X5 u& @% I3 z9 r; n# ?MD5的用途主要有:
  d' @! y! Y4 `$ L2 J2 R% d一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
. e- B4 Y7 S5 P9 e0 z新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。
9 r, G/ Q' I& E% l: Q; f1 r数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。
- ~1 J* ]* i4 n; F3 [. h密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储
# X8 M( z, X, K" n# Z' D. [明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。
对于密码存储,Asp.net的实现方法为:

$ l  R9 `, q  z- g6 d+ Y! m
[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)1 w( _* _, ~) n# Y9 Z" r
        {* e3 K7 s0 X; Z- K
            string plainPassword = "innovator";
3 k0 _% R9 C- b- F+ Y! F+ p) j8 }& P& y9 e
            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
5 E7 W& L6 W( `3 h% Z: x            System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();. B3 @4 E! q! j2 h
            byte[] data = ascii.GetBytes(plainPassword);% J1 ?$ P" \4 e5 f) j% a2 g
            byte[] result = md5.ComputeHash(data);, s" ~' ?+ }2 p9 f
            // Convert the MD5 result to Hexadecimal string& L5 N( f. m8 O5 g; e6 E3 M

" g9 ?1 u3 d# W7 B9 j& t$ `            string MD5Password = BinaryToHex(result);, [( ?. b1 F4 M) o% ?  x7 a8 |
            string aa = "";
7 n5 g3 ]% n& y* t9 K( v        }[/mw_shl_code]
3 u& ~8 ]# C+ e
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
9 D: b" j, z1 a' z' o5 G% B: v- C6 j        {
, J: p  j, [4 g% H9 M. Q            string result = "";% x- f( C# X. v0 K3 F" u
            long lowerByte;
1 x' u/ R& O" c* A% q            long upperByte;
8 j: E" F  }! a/ S
/ F/ H% P: ]6 P" ]            foreach (Byte singleByte in BinaryArray)* B3 x) K' ^( w: m3 _' g
            {
; ~  }6 c, `# c8 j  H  n                lowerByte = singleByte & 15;. }/ o  m4 k+ C
                upperByte = singleByte >> 4;
; k) a/ R& i9 }
' n' m' }2 _3 B# x0 l% J+ Q                result += NumberToHex(upperByte);- K& I3 F" L9 j+ U4 v5 c2 U
                result += NumberToHex(lowerByte);
; X% M6 [/ \8 q! d            }- P; F% P$ H5 Y0 Y! O7 [
            return result;
( A9 S& Y* m5 ~9 E9 Z' K+ k        }[/mw_shl_code]

' E" c% L$ ^# A* G7 Y2 w
[mw_shl_code=csharp,true]private static char NumberToHex(long Number)7 q5 x9 T) w# v  i' g
        {! x% d8 M; `, L6 v& x8 n
            if (Number > 9)1 U- P$ H. D# d! ]& ]( y
                return Convert.ToChar(65 + (Number - 10));# i* R  \  L$ c! A# h
            else. X" w8 _0 @' Q! S; L
                return Convert.ToChar(48 + Number);
3 h# h6 W1 K7 S5 E        }[/mw_shl_code]

0 T/ X2 d. [; o$ f; W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了