生活随笔
收集整理的這篇文章主要介紹了
加密算法—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?這三個數便是?private?key
? ? ? ? ? ? ? ? 2、找出?m,?使得?rm =?1?mod?(p-1)(q-1)計算?n?=?pq ?m,?n?這兩個數便是?public?key?
? ? ? ? ? ?3、a是要加密的資料,?b?= a^m?mod?n,?(0?<=?b?<?n),b是加密后的資料
? ? ? ? ? ?4、?解密過程 a =?b^r?mod?pq?(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
Dim?des?As?New?System.Security.Cryptography.DESCryptoServiceProvider?'DES算法??Dim?inputByteArray?As?Byte()??inputByteArray?=?System.Text.Encoding.Default.GetBytes(SourceStr)??des.Key?=?System.Text.Encoding.UTF8.GetBytes(myKey)?'myKey?DES用8個字符,TripleDES要24個字符??des.IV?=?System.Text.Encoding.UTF8.GetBytes(myIV)?'myIV?DES用8個字符,TripleDES要24個字符??Dim?ms?As?New?System.IO.MemoryStream??Dim?cs?As?New?System.Security.Cryptography.CryptoStream(ms,?des.CreateEncryptor(),?System.Security.Cryp????????????tography.CryptoStreamMode.Write)??Dim?sw?As?New?System.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
<span?style="font-size:18px;"><strong>????????Dim?des?As?New?System.Security.Cryptography.DESCryptoServiceProvider?'DES算法??????????des.Key?=?System.Text.Encoding.UTF8.GetBytes(myKey)?'myKey?DES用8個字符,TripleDES要24個字符??????????des.IV?=?System.Text.Encoding.UTF8.GetBytes(myIV)?'myIV?DES用8個字符,TripleDES要24個字符??????????Dim?buffer?As?Byte()?=?Convert.FromBase64String(SourceStr)??????????Dim?ms?As?New?System.IO.MemoryStream(buffer)??????????Dim?cs?As?New?System.Security.Cryptography.CryptoStream(ms,?des.CreateDecryptor(),?System.Security.Cryptography.CryptoStreamMode.Read)??????????Dim?sr?As?New?System.IO.StreamReader(cs)??????????DecryptDes?=?sr.ReadToEnd()</strong></span>?? ?
?
? ? 調用
?
[html]?view plaincopy
<span?style="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>?? ?
?
? ? 這里,我們只是對這三個算法的簡單了解,這三個算法涉及的內容是非常多的,有不對的地方請大牛們多多斧正。
轉載于:https://www.cnblogs.com/miercler/p/5471692.html
總結
以上是生活随笔為你收集整理的加密算法—MD5、RSA、DES的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。