前言
一直困擾著我關于數(shù)據(jù)加密這一塊,24號晚上用了接近3個小時去完成一項任務,本以為立馬能解決,但是為了保證數(shù)據(jù)的安全性,我們開始去對數(shù)據(jù)進行加密,然后接下來3個小時專門去研究加密這一塊,然而用著用著卻發(fā)現(xiàn)了一點問題,于是下班回來到寫這篇博客到深夜才正式解決,請往下看。
3DES數(shù)據(jù)加密
由于數(shù)據(jù)需要獲取出來并顯示于是只能使用對稱加密,關于加密這一塊網(wǎng)上對于.NET Framework的實現(xiàn)數(shù)不勝數(shù),好像對于.NET Core這一塊比較少,于是就開始進行研究。這個時候就利用DES或者Triple DES也稱作3DES,全名為Triple Data Encryption Algorithm (TDEA or Triple DEA),也就是對稱密碼塊密碼,3DES對數(shù)據(jù)的每個數(shù)據(jù)塊利用算法進行3次加密,最初開始設計該算法時,位數(shù)只有56位也就是7個字節(jié),設計者認為已經(jīng)足夠用,但是隨著計算機的高速發(fā)展,暴露破解已經(jīng)使得該算法呈現(xiàn)的問題日益突出,而3DES算法的出現(xiàn)提供了一種比較簡單的方法來增加密鑰的大小從而防止攻擊,而不是重新設計一套全新的分組密碼算法。
3DES加密算法命名
定義算法最早期的標準被放在ANS X9.52中并在1998年發(fā)布并將其描述為三重數(shù)據(jù)加密算法(簡稱TDEA),在ANSI X3.92中定義了該算法的三個操作但是并沒有使用DES或者3DES,直到1999年發(fā)布的FIPS PUB 46-3在正式命名三重數(shù)據(jù)加密算法,大概在2004到2005的樣子才正式引入三重數(shù)據(jù)加密算法,之前一直以TDEA存在著,也就是說TDEA就是3DES,但是沒有使用3DES作為標準術語。
3DES算法邏輯
三重數(shù)據(jù)加密算法使用包括密鑰K1,密鑰K2和密鑰約束K3,每一個包含56位不包含奇偶校驗,算法實現(xiàn)公式如下:
ciphertext = EK3(DK2(EK1(plaintext)))
即
密文 = EK3(DK2(EK1(平文)))
用K1對數(shù)據(jù)進行加密,用K2對數(shù)據(jù)進行解密,用K3對數(shù)據(jù)再加密。
解密公式為如下:
plaintext = DK1(EK2