iOS DES加密與3DES加密

2021-06-26 23:09:03 字數 883 閱讀 4119

最近專案中遇到了加解密的問題,然後翻閱了相關資料,成功搞定。 現在將這些知識點總結一下,一是為了以後複習,二是為了給大家提供參考。

1.  先來說說des操作,定義我這裡就不敘述了,網上一堆一堆的。接下來說一下使用時應該注意的幾點。 首先,大家要分清key(金鑰),data(待運算元據)跟mode(加密模式)。其中key必須為8位元組(64位),data需要是8位元組(64位)的倍數,這裡需要注意了,如果data不是8位元組的倍數,那麼我們需要進行資料填充,資料填充使用的演算法不一定相同。mode貌似有許多種,這裡只簡單的說一下ecb跟cbc模式。

ecb模式:將待處理的資料分成若干塊,每塊的長度都為8位元組(64位),與key長度相同。然後對每塊進行加密或解密,最後將他們連線在一起便是最終的結果。每一塊的資料互不干擾。

cbc模式:也需要將待處理的資料分塊,但是每一塊資料在加密或者解密之前都要與前一塊的結果做一次異或操作,因此該模式需要定義乙個特殊的8位元組key,用於和第一塊資料做異或操作。這個特殊的key就是通常說的初始化向量。在**中書寫時需要配置iv引數,注意iv引數是對應cbc模式的。這樣一來,每一塊資料都是有聯絡的,這是與ecb模式不同的一點。

2. 再來說說3des操作,也就是進行3次des操作。設ek()和dk()分別代表des演算法的加密和解密過程,k代表des演算法使用的金鑰,p代表明文,c代表密文,則3des演算法的過程可表示為:

c = ek3(dk2(ek1(p)))

p = dk1(ek2(dk3(c)))

3des同樣有ecb跟cbc模式,同上面講的一樣。這裡需要注意一下key的長度,應該是24位。比如我們已知的key是16位的,那麼我們需要將其分為2段,每一段都是8位,則k1=左8位, k2=右8位,k3=左8位,也就是  k1=k3,但不能k1=k2=k3,因為如果每段使用的key都相同,就回到des演算法了。

Des與3Des加密解密

des和3des演算法 public class des b ret.tostring return ret.tostring 3des加密 金鑰不能每8位重複,例如 123456781234567812345678,如果這樣則演算法退化為des,c 會檢測,不能使用 明文 金鑰 public st...

3des演算法加密

實現的原理 public class encryption 執行3des加密 param secretkey 秘鑰 param datastring 明文 return base64編碼文字 public static string encryptdes string secretkey,strin...

3DES加密認識與使用

公司的專案需要用到3des加密,於是自己學習了一下,下面分享一下學習內容 3des是三重資料加密演算法塊密碼的通稱,聽到名字就知道與des加密有關,簡單的理解為用des加密三次,通過增加des的金鑰長度來避免暴力破解。3des演算法是指使用雙長度 16位元組 金鑰k kl kr 將8位元組明文 資料...