介绍一下MD5加密算法.doc
介绍一下MD5加密算法
MD5算法是一种非常优秀的加密算法。
MD5加密算法特点:灵活性、不可恢复性。
介绍MD5加密算法基本情况MD5的全称是Message-Digest
Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA
Data Security Inc发明,经MD2、MD3和MD4发展而来。
Message-Digest泛指字节串(Message)的Hash变换,就是把一
个任意长度的字节串变换成一定长的大整数。请注意我使用
了”字节串”而不是”字符串”这个词,是因为这种变换只与字
节的值有关,与字符集或编码方式无关。
MD5将任意长度的”字节串”变换成一个128bit的大整数,并
且它是一个不可逆的字符串变换算法,换句话说就是,即使
你看到源程序和算法描述,也无法将一个MD5的值变换回
原始的字符串,从数学原理上说,是因为原始的字符串有无
穷多个,这有点象不存在反函数的数学函数。
MD5的典型应用是对一段Message(字节串)产生
fingerprint(指纹),以防止被”篡改”。举个例子,你将一段话
写在一个叫 readme.txt文件中,并对这个readme.txt产生一
个MD5的值并记录在案,然后你可以传播这个文件给别人,
别人如果修改了文件中的任何内容,你对这个文件重新计算
MD5时就会发现。如果再有一个第三方的认证机构,用MD5
还可以防止文件作者的”抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用
户的密码是以MD5值(或类似的其它算法)的方式保存的,
用户Login的时候,系统是把用户输入的密码计算成MD5
值,然后再去和系统中保存的MD5值进行比较,而系统并
不”知道”用户的密码是什么。
一些黑客破获这种密码的方法是一种被称为”跑字典”的方
法。有两种方法得到字典,一种是日常搜集的用做密码的字
符串表,另一种是用排列组合方法生成的,先用MD5程序
计算出这些字典项的MD5值,然后再用目标的MD5值在这
个字典中检索。
即使假设密码的最大长度为8,同时密码只能是字母和数字,
共26+26+10=62个字符,排列组合出的字典的项数则是
P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字
了,存储这个字典就需要TB级的磁盘组,而且这种方法还
有一个前提,就是能获得目标账户的密码MD5值的情况下
才可以。
在很多电子商务和社区应用中,管理用户的Account是一种
最常用的基本功能,尽管很多Application Server提供了这些
基本组件,但很多应用开发者为了管理的更大的灵活性还是
喜欢采用关系数据库来管理用户,懒惰的做法是用户的密码
往往使用明文或简单的变换后直接保存在数据库中,因此这
些用户的密码对软件开发者或系统管理员来说可以说毫无
保密可言,本文的目的是介绍MD5的Java Bean的实现,同
时给出用MD5来处理用户的Account密码的例子,这种方
法使得管理员和程序设计者都无法看到用户的密码,尽管他
们可以初始化它们。但重要的一点是对于用户密码设置习惯
的保护。
md5流程图
md5流程图MD5流程图。
MD5(Message Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值,通常以32位的十六进制数表示。
MD5算法主要用于确保数据的完整一致性,防止数据被篡改。
在实际应用中,MD5常被用于加密存储用户密码、验证文件完整性等场景。
MD5算法的流程可以用一张流程图来清晰地展现出来。
下面我们将从输入数据、数据填充、初始化向量、循环压缩等方面来介绍MD5算法的流程图。
1. 输入数据。
MD5算法的输入数据可以是任意长度的二进制数据,首先需要将输入数据分割成512位(64字节)的块。
如果输入数据的长度不足512位,需要进行数据填充。
2. 数据填充。
数据填充是为了保证输入数据的长度是512位的整数倍。
填充的方法是在数据的末尾添加一个1和若干个0,直到数据的长度满足要求。
然后在末尾添加一个64位的整数,表示原始数据的长度(以位为单位)。
3. 初始化向量。
MD5算法使用4个32位的寄存器(A、B、C、D)作为初始化向量,这些寄存器的初始值是固定的。
初始化向量的作用是在压缩函数中引入一些固定的值,增加算法的随机性和安全性。
4. 循环压缩。
MD5算法使用了64个循环压缩函数,每个函数都对512位的数据块进行一次处理。
在每个循环中,都会对寄存器进行一系列的位运算和逻辑操作,最终得到一个新的寄存器值。
5. 输出结果。
经过64个循环压缩函数的处理后,MD5算法将得到一个128位的散列值,这个值就是MD5算法对输入数据的加密结果。
总结。
MD5算法的流程图清晰地展示了整个算法的处理过程,从输入数据到数据填充、初始化向量、循环压缩再到输出结果,每个步骤都有清晰的逻辑关系。
通过了解MD5算法的流程图,我们可以更加深入地理解MD5算法的工作原理,为我们的实际应用提供了更多的参考和指导。
在实际应用中,虽然MD5算法曾经被广泛使用,但是由于其存在一些安全性问题,现在已经逐渐被更安全的算法所取代。
md5是啥意思作用
MD5是啥意思作用1. 引言在计算机科学和信息安全领域,MD5是一种广泛应用的哈希函数。
通过将输入数据转换为固定长度的字符串,MD5可以用于验证数据完整性、生成数字签名和加密密码等诸多用途。
本文将详细介绍MD5的定义、工作原理及其在信息安全中的应用。
2. MD5的定义与特点MD5,即Message Digest Algorithm 5,是一种消息摘要算法。
它最初由Ron Rivest设计于1992年,并于1996年作为RFC 1321正式发布。
MD5产生的摘要通常为128位的二进制数字,也可以表示为32位的十六进制数。
与其他哈希函数相比,MD5具有以下几个特点:•固定长度输出:MD5的输出长度始终为128位,无论输入的数据长度是多少。
这使得MD5非常适用于生成固定长度的标识符或检验和。
•快速计算:MD5的计算速度相对较快,适用于在大量数据中快速查找匹配项的场景。
•冲突概率较高:尽管MD5在常规应用中足够安全,但由于其较短的输出长度和某些缺陷,被证明存在一定的碰撞风险。
这意味着可能存在两个不同的输入产生相同的MD5哈希值。
3. MD5的工作原理MD5的计算过程可以分为以下四个步骤:•填充数据:将输入的数据按照预定的规则进行填充,使得输入数据的位长度满足一定要求。
•初始化变量:初始化四个32位的寄存器,这些寄存器将在哈希计算过程中被更新。
•处理数据:将填充后的输入数据划分为若干个固定长度的数据块,并对每个数据块进行一系列的置换、移位、异或等运算,以更新寄存器中的内容。
•输出结果:将最终更新后的寄存器值按特定顺序连接起来,形成128位的输出结果,即MD5摘要。
4. MD5的应用场景4.1 数据完整性验证MD5常被用于验证数据的完整性,例如下载文件时可以通过计算文件的MD5值与官方提供的MD5值进行比对,从而确定文件是否被篡改或传输过程中是否发生了错误。
4.2 数字签名数字签名是一种对数据进行认证和完整性保护的技术。
32位md5加密原理
32位md5加密原理MD5(Message Digest Algorithm 5)是一种常用的哈希函数,能够将任意长度的数据转换为128位的哈希值。
它广泛应用于各个领域,如密码学、数字签名以及数据完整性校验等。
本文将介绍32位MD5加密的原理及其过程。
一、MD5的基本原理MD5主要由四个步骤组成:填充、划分、压缩和输出。
首先,对待加密的信息进行填充,使其长度满足512位的倍数。
然后,将填充后的信息划分为若干个512位的分组。
接下来,通过四轮循环运算,对每个分组进行压缩操作。
最后,将压缩后的结果输出为128位的MD5值。
二、填充填充阶段是为了使待加密信息的长度满足512位的倍数。
假设待加密信息的长度为L,那么填充的步骤如下:1. 在信息的末尾添加一个"1",表示信息结束。
2. 在末尾添加若干个"0",直到信息长度满足(L+1+K)%512=448,其中K为满足(L+1+K)%512=448的最小非负整数。
3. 在末尾添加一个64位的二进制数,表示信息的原始长度L。
因为64位可以表示2^64个不同的长度,所以可以满足绝大部分情况下的长度需求。
三、划分填充后的信息将被划分为若干个512位的分组。
假设填充后的信息长度为N*512位,那么划分的步骤如下:1. 将填充后的信息划分为N个512位的分组,每个分组称为一个消息块。
2. 对每个消息块进行压缩操作。
四、压缩压缩操作是MD5算法的核心部分,主要通过四轮循环运算来混淆和加密数据。
每轮循环由16个操作组成,每个操作由逻辑函数、常量和位移量组成。
压缩的步骤如下:1. 初始化四个32位的缓冲区,分别为A、B、C、D。
2. 对每个消息块进行四轮循环运算,每轮循环由16个操作组成。
3. 每轮循环中,根据逻辑函数、常量和位移量对缓冲区进行更新。
4. 最后,将四个缓冲区的内容按顺序连接在一起,即得到128位的MD5值。
五、输出输出阶段将压缩后的结果输出为128位的MD5值。
md5值计算方法
md5值计算方法一、引言在计算机领域中,数据的完整性和安全性是非常重要的。
为了保护数据不被篡改或者伪造,我们需要使用一些加密算法来进行数据的校验和验证。
其中,MD5(Message Digest Algorithm 5)是一种常用的哈希算法,它具有快速、简单、广泛应用等特点。
本文将详细介绍MD5值的计算方法及其应用。
二、MD5值的计算方法MD5算法将任意长度的输入数据通过一系列复杂的运算,最终生成一个128位的哈希值。
在计算MD5值时,主要包括以下几个步骤:1. 填充数据:将原始数据按照一定的规则进行填充,使其长度满足一定的条件。
填充后的数据长度应为512位的整数倍。
2. 划分数据:将填充后的数据划分为若干个512位的分组,每个分组包含16个32位的字。
3. 初始化寄存器:定义四个32位的寄存器A、B、C、D,并初始化为固定的常量。
4. 循环计算:对每个分组进行一系列的运算,包括四轮循环,每轮循环包含16次操作。
5. 生成结果:经过四轮循环计算后,最终得到的四个寄存器的值即为MD5值。
三、MD5值的应用MD5值在计算机领域中有着广泛的应用,主要体现在以下几个方面:1. 数据完整性校验:MD5值可以用于验证数据的完整性,通过对数据进行MD5哈希运算,然后与接收到的MD5值进行比对,如果一致,则说明数据没有被篡改。
2. 密码存储:在用户注册、登录等场景中,为了保护用户的密码安全,常常采用将密码的MD5值存储在数据库中。
这样即使数据库泄露,黑客也无法直接获得用户的明文密码。
3. 文件校验:MD5值可以用于验证文件的完整性,通过对文件进行MD5哈希运算,然后与预期的MD5值进行比对,如果一致,则说明文件没有被篡改。
4. 数字签名:MD5值可以用于生成数字签名,通过对数据进行MD5哈希运算,然后将MD5值与私钥进行加密,生成数字签名。
接收方可以通过对数据进行MD5运算,并使用公钥解密数字签名来验证数据的完整性和真实性。
32位md5加密原理
32位md5加密原理什么是md5加密MD5(Message Digest Algorithm 5)是一种常用的哈希算法,用于将任意长度的数据转换为固定长度的哈希值。
MD5算法广泛应用于数据完整性校验、数字签名、口令加密等领域。
MD5的特点•固定长度:MD5算法将任意长度的输入数据转换为128位的输出,即32个16进制数。
•不可逆性:MD5算法是单向的,无法通过哈希值逆推出原始数据。
•高度离散性:即使输入数据只有微小的变化,其对应的哈希值也会有很大的差异。
MD5加密的应用MD5加密广泛应用于密码存储、文件完整性校验等场景。
在密码存储中,将用户密码经过MD5加密后存储在数据库中,当用户登录时,将输入的密码进行MD5加密后与数据库中的密文进行比对,从而验证密码的正确性。
MD5加密的过程MD5加密的过程可以分为四个步骤:填充、初始化、循环运算和输出。
填充MD5算法要求输入数据的长度是64的整数倍,因此需要对输入数据进行填充。
填充的规则是在数据末尾添加一个1,然后添加若干个0,直到数据长度满足要求。
初始化MD5算法定义了四个32位的寄存器A、B、C、D,初始值分别为固定的常量。
将填充后的数据按照512位(64字节)分组,并将A、B、C、D的初始值分别存放在寄存器中。
循环运算MD5算法将每个512位的分组进行循环运算,共进行四轮。
每轮中,都会对A、B、C、D进行一系列的位运算和逻辑运算,从而更新寄存器的值。
输出经过四轮循环运算后,最终得到的A、B、C、D的值即为加密后的结果。
将这四个32位的值按照从低位到高位的顺序连接起来,即可得到32位的MD5加密结果。
MD5加密的安全性问题尽管MD5算法在很多场景下被广泛应用,但它并不是一个安全的加密算法。
由于MD5算法的设计缺陷,存在以下安全性问题:•易碰撞:MD5算法存在碰撞问题,即不同的输入数据可能会生成相同的MD5值。
这使得攻击者可以通过构造恶意数据,使其与正常数据的MD5值相同,从而绕过数据完整性校验。
加密系列MD5加密和解密算法详解代码示例
加密系列MD5加密和解密算法详解代码示例MD5加密算法是一种广泛应用的密码加密算法,它将任意长度的数据映射为固定长度的128位哈希值。
MD5加密算法是不可逆的,即通过密文无法还原得到原始数据。
MD5加密算法的实现可以通过编写代码来完成。
下面是一个示例的MD5加密算法的代码:```import hashlibdef md5_encrypt(data):md5 = hashlib.md5md5.update(data.encode('utf-8'))return md5.hexdigestif __name__ == '__main__':data = input("请输入需要加密的数据:")encrypted_data = md5_encrypt(data)print("加密结果为:", encrypted_data)```以上代码实现了一个简单的MD5加密算法。
首先导入了`hashlib`模块,该模块提供了一系列用于数据加密的算法,包括MD5算法。
`md5_encrypt`函数接收一个字符串作为输入数据,并将其转换为字节流形式,然后使用`hashlib.md5`方法创建了一个MD5对象。
接着,通过调用MD5对象的`update`方法将输入数据添加到加密流程中。
最后,通过调用MD5对象的`hexdigest`方法获得加密后的结果,并将其返回。
在`if __name__ == '__main__'`下方的代码段中,首先获取用户输入的数据,然后调用`md5_encrypt`函数对其进行加密,并将结果打印到控制台。
下面是MD5解密算法的示例代码:```import hashlibdef md5_decrypt(encrypted_data):md5 = hashlib.md5md5.update(encrypted_data.encode('utf-8'))return md5.hexdigestif __name__ == '__main__':encrypted_data = input("请输入需要解密的数据:")decrypted_data = md5_decrypt(encrypted_data)print("解密结果为:", decrypted_data)```以上代码实现了一个简单的MD5解密算法。
md5crypt算法原理
md5crypt算法原理
MD5Crypt算法是一种基于MD5哈希函数的密码加密算法,它主要用于Linux系统中的密码存储。
MD5Crypt算法的原理是将用户输入的密码与一个随机生成的盐值进行混合,然后对混合后的结果进行多次MD5哈希运算,最终生成加密后的密码字符串。
具体来说,MD5Crypt算法的步骤如下:
1. 生成一个随机的盐值,通常是一个包含8个字符的随机字符串。
2. 将盐值和用户输入的密码按照一定的规则进行混合,得到一个初始的哈希结果。
3. 将初始的哈希结果和盐值以及用户输入的密码再次混合,然后进行MD5哈希运算,得到新的哈希结果。
4. 重复上述步骤数千次,每次都将上一次的哈希结果与盐值和密码进行混合并进行MD5哈希运算,直到达到指定的迭代次数。
5. 最终得到的哈希结果即为加密后的密码字符串,通常包含盐值和迭代次数等信息。
MD5Crypt算法的安全性主要来自于其使用了盐值和多次迭代的哈希运算。
盐值增加了密码的复杂度,使得相同的密码在不同用户之间生成的加密结果也是不同的,增加了破解的难度。
而多次迭代的哈希运算则增加了计算量,使得暴力破解的成本变得更高。
然而,需要注意的是,MD5Crypt算法本身并不是无懈可击的,因为MD5哈希函数本身存在碰撞和彩虹表攻击的风险。
因此,在实际应用中,建议使用更安全的哈希算法,如SHA-256等,并结合盐值和适当的迭代次数来增强密码的安全性。
md5加密 参数
md5加密参数MD5加密:保护信息安全的重要工具在信息时代,数据安全是一个非常重要的问题。
随着互联网的发展,人们的隐私和敏感信息越来越容易受到黑客和恶意软件的攻击。
为了保护个人和机构的数据安全,各种加密算法应运而生。
其中,MD5加密算法是一种常用且广泛应用的加密方式。
MD5,全称为Message Digest Algorithm 5,是一种被广泛应用的密码散列函数。
它的主要功能是将任意长度的信息转换为一个128位的哈希值,也就是常说的摘要或指纹。
MD5加密算法具有以下几个特点:1. 单向性:MD5加密算法是一种单向加密算法,即无法通过哈希值逆向推导出原始信息。
这意味着一旦信息经过MD5加密,就无法还原为原始数据。
这种特性保证了加密后的信息的安全性。
2. 高度不可逆:MD5算法经过了多轮复杂的运算,使得不同的输入信息可以生成不同的哈希值。
即使是原始信息仅有微小的变化,也会导致完全不同的哈希值。
这种高度不可逆的特性保证了加密后的信息的唯一性。
3. 快速计算:MD5算法的计算速度相对较快,能够在很短的时间内完成大量数据的加密。
这为实时加密和大规模数据处理提供了便利。
MD5加密算法在实际应用中有着广泛的用途。
以下是几个典型的应用场景:1. 密码保护:在用户注册和登录过程中,常常需要对密码进行加密存储,以保护用户的账号安全。
MD5加密算法可以对用户输入的密码进行加密,并将加密后的密文存储在数据库中。
在用户登录时,将用户输入的密码再次进行MD5加密,然后与数据库中的密文进行比对,从而验证密码的正确性。
2. 文件完整性校验:MD5算法可以对文件的哈希值进行计算,生成文件的唯一标识。
在文件传输过程中,接收方可以通过计算接收到的文件的哈希值与发送方提供的哈希值进行比对,来验证文件的完整性和准确性。
3. 数字签名:MD5算法可以用于生成数字签名,确保信息的真实性和完整性。
发送方可以将信息的MD5哈希值与信息一同发送给接收方,接收方可以通过重新计算信息的哈希值与接收到的哈希值进行比对,来验证信息的真实性和完整性。
MD5算法详解
MD5算法详解前⾯⼀篇,带⼤家对加密算法进⾏了鸟瞰,本篇主要谈md5算法的实现。
MD5:Message-Digest Algorithm 5(信息摘要5),确保信息的完整性。
其算法是1992年公开的,那时我才⼏岁,鉴于⼤家对md5都很熟悉,且程序中经常应⽤,我就不再介绍了。
我简单的介绍下设计者。
其⼈是罗纳德·李维斯特,美国密码学家,后来发明了⾮对称秘钥RSA 算法,因这个算法的在信息安全中的突破与重要性⽽获得了2002年的图灵奖。
好了,接下来⼀起看算法步骤以及源代码:1、填充在MD5算法中,⾸先需要对信息进⾏填充,使其位长对512求余的结果等于448,并且填充必须进⾏,使其位长对512求余的结果等于448。
因此,信息的位长(Bits Length)将被扩展⾄N*512+448,N为⼀个⾮负整数,N可以是零。
理解:位长,就是位数。
⽐如⼀个“wbq”,字符串是三个字节存储,⼀个字节8bit,所以位长就是24。
⽤数学语⾔可能更简洁:设M为位长,当且仅当 M%512==448时,才可以处理。
换另⼀种表⽰⽅式,M=N*512+448 ,N>=0填充的⽅法如下:1) 在信息的后⾯填充⼀个1和⽆数个0,直到满⾜上⾯的条件时才停⽌⽤0对信息的填充。
2) 在这个结果后⾯附加⼀个以64位⼆进制表⽰的填充前信息长度(单位为Bit),如果⼆进制表⽰的填充前信息长度超过64位,则取低64位。
经过这两步的处理,M=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。
这样做的原因是为满⾜后⾯处理中对信息长度的要求。
经过两步处理后,信息变成了这样,如下图所⽰:64位,8个字节,⽤来表⽰原始信息的位长。
1private static UInt32[] MD5_Append(byte[] input)2 {3int zeros = 0;4int ones = 1;5int size = 0;6int n = input.Length;7int m = n % 64;8if (m < 56)9 {10 zeros = 55 - m;11 size = n - m + 64;12 }13else if (m == 56)14 {15 zeros = 0;16 ones = 0;17 size = n + 8;18 }19else20 {21 zeros = 63 - m + 56;22 size = n + 64 - m + 64;23 }2425 ArrayList bs = new ArrayList(input);26if (ones == 1)27 {28 bs.Add((byte)0x80); // 0x80 = $1000000029 }30for (int i = 0; i < zeros; i++)31 {32 bs.Add((byte)0);33 }3435 UInt64 N = (UInt64)n * 8;36byte h1 = (byte)(N & 0xFF);37byte h2 = (byte)((N >> 8) & 0xFF);3839byte h3 = (byte)((N >> 16) & 0xFF);40byte h4 = (byte)((N >> 24) & 0xFF);41byte h5 = (byte)((N >> 32) & 0xFF);42byte h6 = (byte)((N >> 40) & 0xFF);43byte h7 = (byte)((N >> 48) & 0xFF);44byte h8 = (byte)(N >> 56);45 bs.Add(h1);46 bs.Add(h2);47 bs.Add(h3);48 bs.Add(h4);49 bs.Add(h5);50 bs.Add(h6);51 bs.Add(h7);52 bs.Add(h8);53byte[] ts = (byte[])bs.ToArray(typeof(byte));5455/* Decodes input (byte[]) into output (UInt32[]). Assumes len is56 * a multiple of 4.57*/58 UInt32[] output = new UInt32[size / 4];59for (Int64 i = 0, j = 0; i < size; j++, i += 4)60 {61 output[j] = (UInt32)(ts[i] | ts[i + 1] << 8 | ts[i + 2] << 16 | ts[i + 3] << 24);62 }63return output;64 }说明,补多少0,如何补?第7⾏,求余。
MD5加密及16位或32位加密解密方法
C#实现MD5加密方法一简单介绍一下MD5MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。
MD5具有很好的安全性(因为它具有不可逆的特征,加过密的密文经过解密后和加密前的密文相同的可能性极小)引用using System.Security.Cryptography;using System.Text;具体代码如下(写在按钮的Click事件里):byte[] result = Encoding.Default.GetBytes(this.tbPass.Text.Trim()); //tbPass为输入密码的文本框MD5 md5 = new MD5CryptoServiceProvider();byte[] output = puteHash(result);this.tbMd5pass.Text = BitConverter.ToString(output).Replace("-",""); //tbMd5pass为输出加密文本的文本框方法二C# md5加密(上)string a; //加密前数据string b; //加密后数据b=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(a," MD5")using System;using System.Security.Cryptography;方法2public static string GetMD5(string myString){MD5 md5 = new MD5CryptoServiceProvider();byte[] fromData = System.Text.Encoding.Unicode.GetBytes(myString);byte[] targetData = puteHash(fromData);string byte2String = null;for (int i=0; i<targetData.Length; i++){byte2String += targetData[i].ToString("x");}return byte2String;}using System.Security.Cryptography;/// <summary>/// 给一个字符串进行MD5加密/// </summary>/// <param name="strText">待加密字符串</param>/// <returns>加密后的字符串</returns>public static string MD5Encrypt(string strText){MD5 md5 = new MD5CryptoServiceProvider();byte[] result = puteHash(System.Text.Encoding.Default.GetBytes(strTe xt));return System.Text.Encoding.Default.GetString(result);}方法三C# MD5加密C#开发笔记一、C# MD5-16位加密实例,32位加密实例(两种方法)环境:2005/sql server2000/xp测试通过1.MD516位加密实例using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;namespace md5{class Program{static void Main(string[] args){Console.WriteLine(UserMd5("8"));Console.WriteLine(GetMd5Str("8"));}/**//// <summary>/// MD5 16位加密加密后密码为大写/// </summary>/// <param name="ConvertString"></param>/// <returns></returns>public static string GetMd5Str(string ConvertString){MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();string t2 =BitConverter.ToString(puteHash(UTF8Encoding.Default.GetBytes(ConvertStri ng)), 4, 8);t2 = t2.Replace("-", "");return t2;}/**//// <summary>/// MD5 16位加密加密后密码为小写/// </summary>/// <param name="ConvertString"></param>/// <returns></returns>public static string GetMd5Str(string ConvertString){MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();string t2 =BitConverter.ToString(puteHash(UTF8Encoding.Default.GetBytes(ConvertStri ng)), 4, 8);t2 = t2.Replace("-", "");t2 = t2.ToLower();return t2;}/**//// <summary>/// MD532位加密/// </summary>/// <param name="str"></param>/// <returns></returns>static string UserMd5(string str){string cl = str;string pwd = "";MD5 md5 = MD5.Create();//实例化一个md5对像// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择byte[] s = puteHash(Encoding.UTF8.GetBytes(cl));// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得for (int i = 0; i < s.Length; i++){// 将得到的字符串使用十六进制类型格式。
