加密算法—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
  1. Dim?des?As?New?System.Security.Cryptography.DESCryptoServiceProvider?'DES算法??
  2. Dim?inputByteArray?As?Byte()??
  3. inputByteArray?=?System.Text.Encoding.Default.GetBytes(SourceStr)??
  4. des.Key?=?System.Text.Encoding.UTF8.GetBytes(myKey)?'myKey?DES用8個字符,TripleDES要24個字符??
  5. des.IV?=?System.Text.Encoding.UTF8.GetBytes(myIV)?'myIV?DES用8個字符,TripleDES要24個字符??
  6. Dim?ms?As?New?System.IO.MemoryStream??
  7. Dim?cs?As?New?System.Security.Cryptography.CryptoStream(ms,?des.CreateEncryptor(),?System.Security.Cryp????????????tography.CryptoStreamMode.Write)??
  8. Dim?sw?As?New?System.IO.StreamWriter(cs)??
  9. sw.Write(SourceStr)??
  10. sw.Flush()??
  11. cs.FlushFinalBlock()??
  12. ms.Flush()??
  13. EncryptDes?=?Convert.ToBase64String(ms.GetBuffer(),?0,?ms.Length)??



?

? ? 調用?

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

?

?

? ? 解密

?

[html]?view plaincopy
  1. <span?style="font-size:18px;"><strong>????????Dim?des?As?New?System.Security.Cryptography.DESCryptoServiceProvider?'DES算法??
  2. ????????des.Key?=?System.Text.Encoding.UTF8.GetBytes(myKey)?'myKey?DES用8個字符,TripleDES要24個字符??
  3. ????????des.IV?=?System.Text.Encoding.UTF8.GetBytes(myIV)?'myIV?DES用8個字符,TripleDES要24個字符??
  4. ????????Dim?buffer?As?Byte()?=?Convert.FromBase64String(SourceStr)??
  5. ????????Dim?ms?As?New?System.IO.MemoryStream(buffer)??
  6. ????????Dim?cs?As?New?System.Security.Cryptography.CryptoStream(ms,?des.CreateDecryptor(),?System.Security.Cryptography.CryptoStreamMode.Read)??
  7. ????????Dim?sr?As?New?System.IO.StreamReader(cs)??
  8. ????????DecryptDes?=?sr.ReadToEnd()</strong></span>??

?

?

? ? 調用

?

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

?

?

? ? 這里,我們只是對這三個算法的簡單了解,這三個算法涉及的內容是非常多的,有不對的地方請大牛們多多斧正。

轉載于:https://www.cnblogs.com/miercler/p/5471692.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396055.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396055.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396055.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

隨機加密_隨機藝術和加密圣誕樹

隨機加密When I first learned how to code, one of my first tasks was setting up an SSH key so I could use encryption to securely connect to my friend’s Linux server.當我第一次學習如何編碼時&#xff0c;我的第一個任務是設置SSH密鑰&#xff0c;以便可以使用加密…

用c語言編寫一個2048 游戲,求c語言編寫的2048游戲代碼,盡量功能完善一些

正在編寫中&#xff0c;請稍后&#xff01;追答 : 代碼來了&#xff01;有點急&#xff0c;沒做界面。追答 : 2048_launcher。c&#xff1a;#include#include#includevoid main(){printf("正在啟動中&#xff0c;請稍后&#xff01;");Sleep(1000);system("bin\…

MySQL之數據庫對象查看工具mysqlshow

mysqlshow&#xff1a;數據庫對象查看工具&#xff0c;用來快速查找存在哪些數據庫、數據庫中的表、表中的列或索引。選項&#xff1a;--count 顯示數據庫和表的統計信息-k 顯示指定的表中的索引-i 顯示表的狀態信息不帶任何參數顯示所有數據庫[rootwww mys…

軟件工程分組

電子零售系統 陳仔祥 孟拓 陳庚 汪力 郭澳林 崔祥岑 劉校 肖宇 武清 胡圣陽轉載于:https://www.cnblogs.com/2231c/p/9960751.html

vnr光學識別怎么打開_干貨|指紋鎖的指紋識別模塊的前世今生,智能鎖的指紋識別到底有多智能?...

智能鎖現在也有很多叫法&#xff1a;指紋鎖、電子鎖。可見指紋識別是智能鎖的核心功能了&#xff0c;那我們今天來聊聊智能鎖的指紋識別模塊。指紋識別的歷史指紋識別認證的流程指紋識別技術的種類指紋識別的歷史早在2000多年前我國古代的人就將指紋用于簽訂合同和破案了&#…

使用Kakapo.js進行動態模擬

by zzarcon由zzarcon 使用Kakapo.js進行動態模擬 (Dynamic mocking with Kakapo.js) 3 months after the first commit, Kakapo.js reaches the first release and we are proud to announce that now it is ready to use. Let us introduce you Kakapo.首次提交3個月后&#…

android ble 實現自動連接,Android:自動重新連接BLE設備

經過多次試驗和磨難之后,這就是我最好讓Android自動連接的唯一用戶操作是首先選擇設備(如果使用設置菜單然后首先配對).您必須將配對事件捕獲到BroadcastReceiver中并執行BluetoothDevice.connectGatt()將autoconnect設置為true.然后當設備斷開連接時,調用gatt.connect().更新&…

萊斯 (less)

less中的變量 1、聲明變量&#xff1a;變量名&#xff1a;變量值 使用變量名&#xff1a;變量名 less中的變量類型 ①數字類1 10px ②字符串&#xff1a;無引號字符串red和有引號字符串"haha" ③顏色類red#000000 rgb() …

hackintosh黑蘋果_如何構建用于編碼的Hackintosh

hackintosh黑蘋果by Simon Waters西蒙沃特斯(Simon Waters) 如何構建用于編碼的Hackintosh (How to build a Hackintosh for coding) Let’s talk about Hackintosh-ing — the installation of Mac OS X on PC hardware.我們來談談Hackintosh-ing-在PC硬件上安裝Mac OSX。 I…

hide show vue 動畫_(Vue動效)7.Vue中動畫封裝

關鍵詞&#xff1a;動畫封裝——進行可復用一、如何封裝&#xff1f;1、使用&#xff1a;局部組件傳遞數據局部組件中使用JS動畫2、原理&#xff1a;將動畫效果完全第封裝在一個名為<fade>的組件中&#xff0c;今后如要復用&#xff0c;只需要復制有其組件名的部分&#…

android項目編譯命令行,命令行編譯Android項目

1. 生成R文件> aapt package -f -m -J ./gen -S res -M AndroidManifest.xml -I D:\android.jar-f 如果編譯生成的文件已經存在&#xff0c;強制覆蓋。-m 使生成的包的目錄存放在-J參數指定的目錄-J 指定生成的R.java 的輸出目錄路徑-S 指定res文件夾的路徑-I 指定某個版本平…

jQuery datepicker和jQuery validator 共用時bug

當我們給一個元素綁定一個datepick后又要對它用validator進行驗證時會發現驗證并沒有成功 因為當點擊該元素時候input彈出datepick的UI就已經失去了焦點它驗證的仍然是前一個值&#xff0c; 不過還好 datepick提供了onSelect 事件我們可以在這個事件觸發的時候重新把焦點在賦給…

《Python地理數據處理》——導讀

前言本書可以幫助你學習使用地理空間數據的基礎知識&#xff0c;主要是使用GDAL / OGR。當然&#xff0c;還有其他選擇&#xff0c;但其中一些都是建立在GDAL的基礎之上&#xff0c;所以如果你理解了本書中的內容&#xff0c;就可以很輕松地學習其他知識。這不是一本關于地理信…

記一次Java AES 加解密 對應C# AES加解密 的一波三折

最近在跟三方對接 對方采用AES加解密 作為一個資深neter Ctrl CV 是我最大的優點 所以我義正言辭的問他們要了demo java demo代碼&#xff1a; public class EncryptDecryptTool {private static final String defaultCharset "UTF-8";private static final String …

zemax評價函數編輯器_ZEMAX與光學設計案例:激光擴束系統詳細設計與公差分析(二)...

目前超過兩千人的光學與光學設計方面的微信公眾號&#xff0c;歡迎您的到來&#xff01;激光擴束系統公差分析ZEMAX與光學設計案例&#xff1a;激光擴束系統詳細設計與公差分析(二)作者&#xff1a;墨子川上10倍擴束系統在上篇已經設計好了&#xff0c;接下來就是進行系統的公差…

決策者根據什么曲線做出決策_如何做出產品設計決策

決策者根據什么曲線做出決策by Tanner Christensen由Tanner Christensen 如何做出產品設計決策 (How Product Design Decisions are Made) Recently in a Facebook group dedicated to designers, known as Designers Guild, a young design student named Marina Candela ask…

移動前端框架重構幾個關鍵問題

1. 是否該廢棄iscroll&#xff1f; 我得出的結論是&#xff0c;是該廢棄了。那當時為什么要用iscroll&#xff1f; 原因有三個&#xff1a; 1. 因為別人也用了。 2. 為了iPhone上頁面滑動更順暢。 3. 為了用上拉、下拉刷新。 關于這三個原因有幾點觀點&#xff1a; 1. 人最容易…

android 內部共享存儲,Android共享內部存儲

我現在面對txt文件的類似情況,并做到了這一點.File downloadedFile new File( context.getFilesDir(),"simple.txt" );downloadedFile.setReadable( true,false );downloadedFile.setWritable( true,false ); //set read/write for othersUri downloadFileUri Uri.f…

UiPath: Selectors repair 選擇器的修復,即被選擇的按鈕發生改變如何選擇第二按鈕...

實現批量注冊用戶功能時&#xff0c;出現第一個用戶注冊完時&#xff0c;彈出確認按鈕&#xff0c;點擊即可&#xff0c;但是第二個用戶注冊完成時&#xff0c;彈出的按鈕與第一個有差異&#xff0c;圖形用戶界面元素及其父元素的屬性都發生改變。所以就點不了按鈕&#xff0c;…

《C專家編程》一1.6 它很棒,但它符合標準嗎

本節書摘來自異步社區《C專家編程》一書中的第1章&#xff0c;第1.6節&#xff0c;作者 【美】Perter Van Der Linde&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 1.6 它很棒&#xff0c;但它符合標準嗎 不要添亂——立即解散ISO工作小組。 ——匿名人士 …