1. 程式人生 > >幾種常用加密手段的加密與解密

幾種常用加密手段的加密與解密

網路中傳輸敏感資訊的時候通常會對字串做加密解密處理

1.Base64位加密(可加密解密)
    最簡單的加密方式,沒有金鑰,這種方式只要讓別人拿到你的密文,就可以直接解密,只能用來迷惑,一般情況下不單獨使用,因為真的並沒有什麼卵用~可以和其他加密方式混合起來,作為一層外部包裝。
import base64
data = "abc"
#加密
m = Base64.encodestring(data)
print m        
#得到一個base64的值
#解密
date = Base64.decodestring(m)

2.MD5加密(加密不可逆)
MD5的全稱是Message-Digest Algorithm 5(資訊-摘要演算法)
。128位長度。目前MD5是一種不可逆演算法。具有很高的安全性。它對應任何字串都可以加密成一段唯一的固定長度的程式碼。(小貼士:為啥MD5加密演算法不可逆呢~ 按道理來說有加密方式,就會有解密方式呀?因為MD5加密是有種有損的加密方式,比如一段資料為'123',我在加密的時候,遇到1和3都直接當做是a,加密後變成了'a2a',所以解密的時候就出現了4種組合'323''121''123''321',資料一多,自然找不到原始的資料了,當然這種方式加密的密文也不需要解密,需要的時候直接傳送原始密文就好了~只是看不到密文原本的內容)import hashlib
import base64data1 = "abc"
data2 = 'def'
hash = hashlib.md5()
#多個檔案多次加密
hash.update(data1)
hash.update(data2)
value = hash.digest()
print repr(value)        
#得到一個二進位制的字串
print hash.hexdigest()     #得到一個十六進位制的字串
print base64.encodestring(value)    #得到base64的值

3.sha1加密(加密不可逆)
SHA1的全稱是Secure Hash Algorithm(安全雜湊演算法) 。SHA1基於MD5,加密後的資料長度更長。它對長度小於264的輸入,產生長度為160bit的雜湊值
。比MD5多32位。因此,比MD5更加安全,但SHA1的運算速度就比MD5要慢了。使用方法和MD5其實是一樣的~ 
import hashlib
#單個檔案一次加密
value = hashlib.sha1('This is a sha1 test!').hexdigest()
print value 
#得到一個十六進位制的字串

4.AES加密(需要金鑰才能解密)
AES加密為對稱金鑰加密,加密和解密都是用同一個解密規則,AES加密過程是在一個4×4的位元組矩陣上運作,這個矩陣又稱為"狀態(state)",因為金鑰和加密塊要在矩陣上多次的迭代,置換,組合,所以對加密快和金鑰的位元組數都有一定的要求,AES金鑰長度的最少支援為128、192、256,加密塊分組長度128位。這種加密模式有一個最大弱點:甲方必須把加密規則告訴乙方,否則無法解密。儲存和傳遞金鑰,就成了最頭疼的問題。