AES模式和填充

AES是分組加密,也就是說它是對固定大小的分組數(shù)據(jù)進(jìn)行處理。AES每次處理的128位(16字節(jié))的輸入。不過,大多數(shù)要加密的的數(shù)據(jù)都不是16字節(jié)長。為了解決這個問題,需要選擇合適的模式。

模式是用來將數(shù)據(jù)分組串起來從而使得任意數(shù)據(jù)都能加密的算法。模式適用于任何分組的加密算法,包括AES。

如果你不想了解AES模式的細(xì)節(jié),那就相信我:對iOS設(shè)備而言是CBC以及PKCS#7填充

最簡單的模式是電子密碼本(ECB)。但千萬不要在iOS應(yīng)用中使用該模式。

最常見的分組加密模式是密碼分組鏈模式(CBC)。

填充的作用是在加密前將普通文本的長度擴(kuò)展到需要的長度。關(guān)鍵在于填充的數(shù)據(jù)能夠在解密后正確的移除。

實現(xiàn)方法有好多種,但iOS支持一種叫PKCS#7的填充方式。這種方式由選項kCCOptionPKCS7Padding來定義

CBC是最常用的加密模式,因此最方便跟其他系統(tǒng)交換數(shù)據(jù)。這也是蘋果安全團(tuán)隊推薦的模式。

初始化向量

在鏈模式如CBC中,每個分組都會影響到下一個分組的加密。這就是為了保證兩個相同的普通文本分組不會生成相同的密文分組。

第一個分組是個特列,因為它前面再沒有其他的分組了。鏈模式允許定義一個額外的稱為初始化向量(Initialization Vector, IV)的分組來開始這個鏈。這個通常會被標(biāo)成可選的。但你總是需要提供一個。否則,它會用一個全是0的分組,那樣會讓你的數(shù)據(jù)容易受到特定的攻擊的侵害。

CCCryptorStatus CCCrypt(
    CCOperation op,         /* kCCEncrypt, etc. */
    CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */
    CCOptions options,      /* kCCOptionPKCS7Padding, etc. */
    const void *key,
    size_t keyLength,
    const void *iv,         /* optional initialization vector */
    const void *dataIn,     /* optional per op and alg */
    size_t dataInLength,
    void *dataOut,          /* data RETURNED here */
    size_t dataOutAvailable,
    size_t *dataOutMoved)
    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);

AES提供了三種密鑰長度:128位,192位和256位。
推薦使用AES-128位

在內(nèi)部實現(xiàn)上,AES只是提供一個接收固定長度密鑰和16字節(jié)大小的分組,然后生成另外一個不同的16字節(jié)大小的分組的數(shù)學(xué)函數(shù)。

  • AES使用固定長度的密鑰,而不是變長密碼。必須將密碼轉(zhuǎn)成密鑰才能在AES中使用它們。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要介紹移動端的加解密算法的分類、其優(yōu)缺點特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,679評論 5 29
  • 這篇文章主要講述在Mobile BI(移動商務(wù)智能)開發(fā)過程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲、登錄驗證這幾個方面涉及的加密...
    雨_樹閱讀 3,039評論 0 6
  • Guide to BluetoothSecurity原文 本出版物可免費從以下網(wǎng)址獲得:https://doi.o...
    公子小水閱讀 8,779評論 0 6
  • 目錄 準(zhǔn)備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 39,034評論 12 117
  • 今年快生的時候無聊畫的,歪歪一下這個在肚子里即將到來的小精靈,那時不知道露露對她好奇不好奇,但希望她們以后是死黨,...
    yokocw閱讀 197評論 2 1

友情鏈接更多精彩內(nèi)容