700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 加密算法—MD5 RSA DES

加密算法—MD5 RSA DES

时间:2023-01-24 13:59:27

相关推荐

加密算法—MD5 RSA DES

最近因为要做一个加密的功能,简单了解了一下加密算法,现在比较常用的有三个加密算法MD5加密算法、RSA加密算法、DES加密算法。

MD5加密算法

定义:MD5算法是将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,即使你看到源程序和算法描述,也无法将MD5的值变回原始的字符串。

应用:在有些操作系统中,用户的密码是以MD5的方式保存的,用户登录时,系统吧用户输入的密码计算成MD5中,然后和数据库中保存的MD5值进行比较,如果相同则登录成功,如果不同则登录失败,而系统并不知道用户的密码是什么。

RSA加密算法

定义:RSA既能用于数据加密,也能用于数字签名。

原理:1、找出三个数p、q、r p、q是相异的中质数,r是与(p-1)(q-1)互质的数,p,q,r这三个数便是privatekey

2、找出m,使得rm =1mod(p-1)(q-1)计算n=pq m,n这两个数便是publickey

3、a是要加密的资料,b= a^mmodn,(0<=b<n),b是加密后的资料

4、解密过程 a =b^rmodpq(0<=c<pq)

局限性:由于进行的都是大数计算,速度一直是RSA的缺陷。一般来说只用于少量数据加密。

DES加密算法

有点:DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础(动态的生成key)

原理:DES算法有三个参数:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

应用:我们最后使用的就是DES加密算法,但是由于用户对数据的保密性并没有高度的要求,所以我们没有使用动态的key,而是使用了静态的key.

加密程序

[html]view plaincopy DimdesAsNewSystem.Security.Cryptography.DESCryptoServiceProvider'DES算法DiminputByteArrayAsByte()inputByteArray=System.Text.Encoding.Default.GetBytes(SourceStr)des.Key=System.Text.Encoding.UTF8.GetBytes(myKey)'myKeyDES用8个字符,TripleDES要24个字符des.IV=System.Text.Encoding.UTF8.GetBytes(myIV)'myIVDES用8个字符,TripleDES要24个字符DimmsAsNewSystem.IO.MemoryStreamDimcsAsNewSystem.Security.Cryptography.CryptoStream(ms,des.CreateEncryptor(),System.Security.Cryptography.CryptoStreamMode.Write)DimswAsNewSystem.IO.StreamWriter(cs)sw.Write(SourceStr)sw.Flush()cs.FlushFinalBlock()ms.Flush()EncryptDes=Convert.ToBase64String(ms.GetBuffer(),0,ms.Length)

调用

[html]view plaincopy EDes=EncryptDes(DataData(j,k).Value,"12345678","abcdefgh")

解密

[html]view plaincopy <spanstyle="font-size:18px;"><strong>DimdesAsNewSystem.Security.Cryptography.DESCryptoServiceProvider'DES算法des.Key=System.Text.Encoding.UTF8.GetBytes(myKey)'myKeyDES用8个字符,TripleDES要24个字符des.IV=System.Text.Encoding.UTF8.GetBytes(myIV)'myIVDES用8个字符,TripleDES要24个字符DimbufferAsByte()=Convert.FromBase64String(SourceStr)DimmsAsNewSystem.IO.MemoryStream(buffer)DimcsAsNewSystem.Security.Cryptography.CryptoStream(ms,des.CreateDecryptor(),System.Security.Cryptography.CryptoStreamMode.Read)DimsrAsNewSystem.IO.StreamReader(cs)DecryptDes=sr.ReadToEnd()</strong></span>

调用

[html]view plaincopy <spanstyle="font-size:18px;"><strong>UserEntity.userId=DecryptDes(mydataset.Tables(0).Rows(Count).Item(0),"12345678","abcdefgh")UserEntity.userName=DecryptDes(mydataset.Tables(0).Rows(Count).Item(1),"12345678","abcdefgh")UserEntity.passWord=DecryptDes(mydataset.Tables(0).Rows(Count).Item(2),"12345678","abcdefgh")UserEntity.realyName=DecryptDes(mydataset.Tables(0).Rows(Count).Item(3),"12345678","abcdefgh")UserEntity.phoneNumber=DecryptDes(mydataset.Tables(0).Rows(Count).Item(4),"12345678","abcdefgh")UserEntity.unitName=DecryptDes(mydataset.Tables(0).Rows(Count).Item(5),"12345678","abcdefgh")UserEntity.unitType=DecryptDes(mydataset.Tables(0).Rows(Count).Item(6),"12345678","abcdefgh")UserEntity.isDelete=DecryptDes(mydataset.Tables(0).Rows(Count).Item(7),"12345678","abcdefgh")</strong></span>

这里,我们只是对这三个算法的简单了解,这三个算法涉及的内容是非常多的,有不对的地方请大牛们多多斧正。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。