日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

加密算法—MD5、RSA、DES

發布時間:2023/11/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 加密算法—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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。