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

MD5加密方法介绍

[复制链接]

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

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

Araser 楼主

2018-12-5 10:28:35

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

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

x
MD5算法简单的来说就是把任意长度的字串变换成固定长度(通常是128位)的16进制串。RFC 1321定义了MD5算法。! K; L/ m% D! z( H" e. x8 _* R% A/ \
MD5的用途主要有:
. g5 A9 V! C: L9 M一致性验证。比如我们从网上下载了某个文件,网站上一般会给出该文件的MD5值,我们下载下来后,可以利用工具计算出
9 M+ R" M3 K& T2 N  V( [2 V新的MD5值,与正确的MD5值进行对照,如果不一样,则可以断定该文件下载出错或被篡改了。3 A6 W4 P$ x! I+ f  X$ f$ Q9 Q) a2 v
数字签名。可以用MD5算法对发布的程序或发布的消息生成MD5值作为签名等。
) m. r* n$ F6 i0 F! x0 c密码存储。在传输过程中或存储过程中,直接用明文的密码都是很危险的。可以在传输之前先用MD5加密,存储也不用存储
$ |* `* v( K+ Q. g/ s3 H明文,可以直接存储MD5值。在验证时,先把输入的密码转换成MD5值再与存储值进行对比。
对于密码存储,Asp.net的实现方法为:

8 R* r. @, N9 [+ T7 X
[mw_shl_code=csharp,true]protected void Page_Load(object sender, EventArgs e)% \& v1 R# N5 k. L- f* b: v
        {
! Q: g  n" q0 J' K& N* X) Q            string plainPassword = "innovator";1 D: J9 C, ?" V3 A

  E3 S% h( l4 D7 [; |4 `            System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
' s3 F: b3 [! c( P! f/ B            System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();2 W  j# w9 Q. t
            byte[] data = ascii.GetBytes(plainPassword);# D  [0 s8 q- V
            byte[] result = md5.ComputeHash(data);
1 j5 j/ ~6 A8 y4 X( g            // Convert the MD5 result to Hexadecimal string: K: X( a+ Q- c) o( k7 [

# f; b  Q8 o: l7 e            string MD5Password = BinaryToHex(result);
# V4 C$ Y3 j1 q            string aa = "";
. |: V8 m3 e. ~0 T. [1 t4 E        }[/mw_shl_code]
3 T6 L3 ~$ x5 ~' c3 W! G; [
[mw_shl_code=csharp,true]private String BinaryToHex(byte[] BinaryArray)
. A4 r6 ?& m: n# q2 [+ S! ^        {, H$ r4 D' n1 S, l: Z2 W
            string result = "";
7 ~. I* Y3 b8 a            long lowerByte;. A: V. r, F2 }7 n
            long upperByte;
; f# }/ I3 k9 y# U0 j6 X- G- ?' g1 X, B' H4 K
            foreach (Byte singleByte in BinaryArray)
/ t; p, }9 U& I( }+ L            {
0 i7 F0 Y! p! T% n3 w, @                lowerByte = singleByte & 15;" |3 j. T2 l; z$ S! b; G
                upperByte = singleByte >> 4;# t5 T# ^, A$ `) U8 l3 C+ u
( `5 V+ O) w! i* p
                result += NumberToHex(upperByte);* S: S) ^& i- x
                result += NumberToHex(lowerByte);9 b# `$ |$ m1 q: [+ f2 A8 U
            }
7 P' V$ d6 |# S. y            return result;) [. \, f; h: q: ~+ Q
        }[/mw_shl_code]

2 n) F, _4 y( R$ ?
[mw_shl_code=csharp,true]private static char NumberToHex(long Number)# r7 q9 d$ D  V- Q
        {
1 a0 h+ X9 C. D' C2 }% a/ I            if (Number > 9)
$ A2 Z, B: r: \( g6 x                return Convert.ToChar(65 + (Number - 10));1 V: V6 w6 }1 r' [1 ?; S
            else) ]" ]4 R# c# @+ x) I: U. L) ?
                return Convert.ToChar(48 + Number);
" Y. }  W8 Y- E- |+ B# `        }[/mw_shl_code]

# @$ [8 ^7 Q! m" V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了