1. 程式人生 > >c++ 加密MD5/SHA1/BASE64

c++ 加密MD5/SHA1/BASE64

一、常用加密情況有三種 :

1. 資源加密,如圖片,音樂(防盜版)

2. 網路傳輸過程中的加密,避免被人攔截並修改資料(防作弊)

3. 遊戲資料加密(防作弊)

二、加密作用:防止盜版,防止作弊。

三、常見加密方式 :

MD5

MD5的全稱是Message-Digest Algorithm 5(資訊-摘要演算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest開發出來,經md2、md3和md4發展而來。它的作用是讓大容量資訊在用數字簽名軟體簽署私人密匙前被“壓縮”成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的大整數)。不管是md2、md4還是md5,它們都需要獲得一個隨機長度的資訊併產生一個128位的資訊摘要。  

在計算上不大可能找到雜湊為相同的值的兩個不同的輸入;也就是說,兩組資料的雜湊值僅在對應的資料也匹配時才會匹配。資料的少量更改會在雜湊值中產生不可預知的大量更改。所以你很難從加密後的文字中找到蛛絲馬跡。
 

       常用的MD5加密是隻有加密,沒有解密方法的方案,即不可逆轉。通過MD5加密,會生成一串字元。MD5的API簡單點。

MD5由MD4MD3MD2改進而來,主要增強演算法複雜度和不可逆性。

MD5一度被廣泛應用於電腦保安領域。但由於近年來MD5的弱點不斷被發現,以及當今計算機運算能力的不斷提升,現在已經可能人為構造出兩個具有相同MD5校驗值的資訊[2],使本演算法不再適合現今的安全領域。目前,MD5演算法因其普遍、穩定、快速的特點,仍廣泛應用於普通資料的錯誤檢查領域。例如在一些

BitTorrent下載中,軟體將通過計算MD5檢驗下載到的檔案片段的完整性。

MD5演算法較老,雜湊長度固定為128位元,隨著計算機運算能力提高,更快地找到“碰撞”是有可能的。因此,在安全要求高的場合不應再使用MD5。


BASE64:

        可加解密

SHA1:

         單向加密,非逆向。MD5和SHA1就是目前使用最為廣泛的良種加密演算法。這兩種演算法都是基於MD4,但又略有不同。一般來說,SHA1計算速度比較慢,但抗窮舉行能也更好。現在也會用於P2P軟體中比較檔案完整性

還有其它開源加密庫,但是一般不會用到那麼高階的庫,所以一般情況下,這些加密方法就夠了,有興趣可以自己去研究其它庫。

注意事項, 以C風格引入標頭檔案。注意標頭檔案的路徑,如果存放路徑不一樣,不是crypto資料夾,就要改標頭檔案路徑。

#include "crypto/CCCrypto.h"

extern "C" {
#include "crypto/base64/libb64.h"
#include "crypto/md5/md5.h"
#include "crypto/sha1/sha1.h"
}