開發常用到的幾種加密方式

2022-08-05 05:24:19 字數 1662 閱讀 3241

有時候我們經常會聽到一些加密方式 最常見的就是base64和md5  這裡分享一下平時看到的介紹和心得

1.base64

編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足乙個位元組。這樣就把乙個3位元組為一組的資料重新編碼成了4個位元組。當所要編碼的資料的位元組數不是3的整倍數,也就是說在分組時最後一組不夠3個位元組。這時在最後一組填充1到2個0位元組。並在最後編碼完成後在結尾新增1到2個「=」。例:將對abc進行base64編碼首先取abc對應的ascii碼值。a(65)b(66)c(67)。再取二進位制值a(01000001)b(01000010)c(01000011),然後把這三個位元組的二進位製碼接起來(010000010100001001000011),再以6位為單位分成4個資料塊並在最高位填充兩個0後形成4個位元組的編碼後的值(00010000)(00010100)(00001001)(00000011)。藍色部分為真實資料。再把這四個位元組資料轉化成10進製數得(16)(20)(19)(3)。最後根據base64給出的64個基本字元表,查出對應的ascii碼字元(q)(u)(j)(d)。這裡的值實際就是資料在字元表中的索引。資料加密之後,資料量會變大,變大 1/3 左右.[data base64encodeddatawithoptions:0] 加密成二進位制資料

解碼過程就是把4個位元組再還原成3個位元組再根據不同的資料形式把位元組陣列重新整理成資料.

2.md5

md5的全稱是message-digestalgorithm 5,message-digest泛指位元組串(message)的hash變換,就是把乙個任意長度的位元組串變換成一定長的大整數。請注意我使用了"位元組串"而不是"字串"這個詞,是因為這種變換只與位元組的值有關,與字符集或編碼方式無關。 md5將任意長度的"位元組串"變換成乙個128bit的大整數,並且它是乙個不可逆的字串變換演算法,換句話說就是,即使你看到源程式和演算法描述,也無法將乙個md5的值變換回原始的字串,從數學原理上說,是因為原始的字串有無窮多個,這有點象不存在反函式的數學函式。

md5還廣泛用於加密和解密技術上,在很多作業系統中,使用者的密碼是以md5值(或類似的其它演算法)的方式儲存的,使用者login的時候,系統是把使用者輸入的密碼計算成md5值,然後再去和系統中儲存的md5值進行比較,而系統並不"知道"使用者的密碼是什麼。

加密方式

nsstring *password = @"zhang";

password = [password md5string];

單純的 md5加密是不安全的,因此要用到 md5加鹽的方式 

拼接鹽值

2.3 時間戳/動態密碼

1> 實現目標

使用者的密碼是一定的,但是每次傳送給網路的密碼都不同.相同的密碼相同的加密演算法,每次獲得的值不同.客戶端和伺服器端的時間是相同的.

2> 原理

客戶端和伺服器端依時間為基準採用相同的加密演算法

3> 實現細節

客戶端和伺服器端要求時間一致

時間精度越高,越安全

客戶端:傳送網路請求的時候依當前時間為基準進行加密.

伺服器端:以接收到時間為基準進行加密.還要以接收到的時間的前一分鐘時間為基準進行加密.

伺服器端:判斷這兩次的密碼和客戶端傳送的密碼是否一致. 現在蘋果的開發者平台就用了這個技術進行加密 總是要獲取動態密碼

iOS開發中常用到的加密方式

1 base64 1.1 簡介 base64編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足乙個位元組。這樣就把乙個3位元組為一組的資...

iOS開發中常用到的加密方式

1 base64 1.1 簡介 base64編碼的思想是是採用64個基本的ascii碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足乙個位元組。這樣就把乙個3位元組為一組的資...

C 幾種常用的加密方式

aes演算法基於排列和置換運算。排列是對資料重新進行安排,置換是將乙個資料單元替換為另乙個。aes 使用幾種不同的方法來執行排列和置換運算。aes是乙個迭代的 對稱金鑰分組的密碼,它可以使用128 192 和 256 位金鑰,並且用 128 位 16位元組 分組加密和解密資料。與公共金鑰密碼使用金鑰...