C 開發中常用加密解密方法解析

2021-06-21 00:32:10 字數 2533 閱讀 4308

因為最近的做的東西要用到一些關於加密的技術,所以就把一些常用的加密方法給給總結了一下。好了廢話不多說,還是按照以往的慣例,我會通過乙個個的例項,逐一的把常用演算法給大家講解一下。

一、md5加密演算法

我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message-digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。

md5主要用途:

1、對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽名。

2、用於驗證檔案的有效性(是否有丟失或損壞的資料),

3、對使用者密碼的加密,

4、在雜湊函式中計算雜湊值

從上邊的主要用途中我們看到,由於演算法的某些不可逆特徵,在加密應用上有較好的安全性。通過使用md5加密演算法,我們輸入乙個任意長度的位元組串,都會生成乙個128位的整數。所以根據這一點md5被廣泛的用作密碼加密。下面我就像大家演示一下怎樣進行密碼加密。

先看下演示效果:

具體**如下:

首先需要引入命名空間:

using system.security;

using system.security.cryptography;

private void btnmd5_click(object sender, eventargs e)

這裡我們需要注意的是,不論是在加密的過程中,加密前要將加密字串轉為位元組陣列,加密後也要生成密文的位元組資料,然後再轉化為密文。

二、rsa加密演算法

在談rsa加密演算法之前,我們需要先了解下兩個專業名詞,對稱加密和非對稱加密。

對稱加密即:含有乙個稱為金鑰的東西,在訊息傳送前使用金鑰對訊息進行加密,在對方收到訊息之後,使用相同的金鑰進行解密

非對稱加密即:加密和解密使用不同的金鑰的一類加密演算法。這類加密演算法通常有兩個金鑰a和b,使用金鑰a加密資料得到的密文,只有金鑰b可以進行解密操作(即使金鑰a也無法解密),相反,使用了金鑰b加密資料得到的密文,只有金鑰a可以解密。這兩個金鑰分別稱為私鑰和公鑰,顧名思義,私鑰就是你個人保留,不能公開的金鑰,而公鑰則是公開給加解密操作的另一方的。根據不同用途,對資料進行加密所使用的金鑰也不相同(有時用公鑰加密,私鑰解密;有時相反用私鑰加密,公鑰解密)。非對稱加密的代表演算法是rsa演算法。

了解了這兩個名詞下面來講,rsa加密演算法。rsa取名來自開發他們三者的名字。rsa是目前最有影響力的公鑰加密演算法,多用於資料加密和數字簽名。雖然有這麼大的影響力,但是同時它也有一些弊端,它產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密,分組長度太大等。

下面通過示例演示使用rsa加密、解密:

先建立乙個全域性的cspparameters物件param

加密:private void btnjm_click(object sender, eventargs e)

} 解密:

private void btnjiemi_click(object sender, eventargs e)

}效果如圖:

下面我再通過乙個示例向大家演示,通過使用rsa加密演算法產出公匙和私匙

rsacryptoserviceprovider rsa = new rsacryptoserviceprovider();

using (streamwriter sw = new streamwriter(@"d:\publickey.xml"))//產生公匙

using (streamwriter sw = new streamwriter(@"d:\privatekey.xml"))//產生私匙(也包含私匙)

三、des加密

des加密:使用乙個 56 位的金鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是乙個迭代的分組密碼,使用稱為 feistel 的技術,其中將加密的文字塊分成兩半。使用子金鑰對其中一半應用迴圈功能,然後將輸出與另一半進行「異或」運算;接著交換這兩半,這一過程會繼續下去,但最後乙個迴圈不交換。des 使用 16 個迴圈,使用異或,置換,代換,移位操作四種基本運算。額專業術語就看看得了,下面直接給大家演示乙個小demo,以幫助大家的理解。

先定義乙個全域性的位元組陣列和例項化乙個全域性的descryptoserviceprovider物件

byte buffer;

descryptoserviceprovider descsp = new descryptoserviceprovider();

加密:private void button2_click(object sender, eventargs e)

解密:private void button1_click(object sender, eventargs e)

此外還有aes加密演算法,但是aes加密是乙個新的可以用於保護電子資料的加密演算法。其產生的密碼是迭代對稱的分組密碼,代加密使用乙個迴圈結構,在該迴圈中重複置換和替換輸入資料。因為用的不是很多,在這裡就不再做具體的演示了。

好了,關於加密這一節就講到這裡了,這裡只是簡單的介紹了幾種常用的加密方法,同時配以簡單的示例,主要的目的在於對這些加密演算法的了解和使用,當然,如果需要更深層次的加密僅僅知道這些還是遠遠不夠的,有興趣的朋友可以自己去多了解些。希望這些能給大家帶來幫助。也希望大家多多指點!

C 開發中常用加密解密方法解析

一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。md5主要用途 1 對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽...

C 開發中常用加密解密方法解析

一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。md5主要用途 1 對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽...

C 開發中常用加密解密方法解析

一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。md5主要用途 1 對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽...