国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)

這篇具有很好參考價值的文章主要介紹了iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

最近和服務(wù)器同學(xué)對接口進(jìn)行數(shù)據(jù)加解密時用到了AES加密。原本以為AES就一種加密形式,對接過程中才學(xué)習(xí)到AES不同模式、不同填充方式下,結(jié)果都不相同。因此去學(xué)習(xí)了一下AES加密的基本概念、實現(xiàn)原理,以及各種模式下的區(qū)別與實現(xiàn)。

一、概念

AES加密是對稱加密的一種,全稱是Advanced Encryption Standard(高級加密標(biāo)準(zhǔn))。常用于網(wǎng)絡(luò)傳輸中的數(shù)據(jù)加解密。

iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)

這是一個AES在線加密工具。通過網(wǎng)站上的內(nèi)容可以可以看出,加解密除了需要秘鑰(Key)之外,AES還有多種模式,不同的模式加密的方式和結(jié)果都不相同。同時還有秘鑰長度、初始向量、填充方式等參數(shù),結(jié)果也是不盡相同。下面簡單介紹一下AES加密的一些概念和參數(shù):

  • 分組(或者叫塊) :AES是一種分組加密技術(shù),即把明文分成一組一組的,每組長度相等,每次加密一組數(shù)據(jù),直到加密完整個明文。在AES標(biāo)準(zhǔn)規(guī)范中,分組長度只能是128 bits,也就是每個分組為16個bytes(16bytes = 128bits / 8)。
  • 密鑰長度:AES支持的密鑰長度可以是128 bits、192 bits或256 bits。密鑰的長度不同,推薦加密輪數(shù)也不同,如下表:
iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)
  • 加密模式:因為分組加密只能加密固定長度的分組,而實際需要加密的明文可能超過分組長度,此時就要對分組密碼算法進(jìn)行迭代,以完成整個明文加密,迭代的方法就是加密模式。它有很多種,常見的工作模式如下圖:
iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)
  • 初始向量(IV,Initialization Vector) :目的是防止同樣的明文塊,始終加密成同樣的密文塊,以CBC模式為例:
iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)

在每一個明文塊加密前,會讓明文塊和一個值先做異或操作。IV作為初始化變量,參與第一個明文塊的異或,后續(xù)的每一個明文塊和它前一個明文塊所加密出的密文塊相異或,從而保證加密出的密文塊都不同。文章來源地址http://www.zghlxwxcb.cn/news/detail-432684.html

  • 填充方式(Padding) :由于密鑰只能對確定長度的數(shù)據(jù)塊進(jìn)行處理,而數(shù)據(jù)的長度通常是可變的,因此需要對最后一塊做額外處理,在加密前進(jìn)行數(shù)據(jù)填充。常用的模式有PKCS5, PKCS7等。
填充方式 說明 示例(假定塊長度為8,數(shù)據(jù)長度為9)
None 不填充
PKCS7 填充字符串由一個字節(jié)序列組成,每個字節(jié)填充該字節(jié)序列的長度。 填充用八位字節(jié)數(shù),等于7:數(shù)據(jù): FF FF FF FF FF FF FF FF FFPKCS7 填充: FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07
PKCS5 通常與PKCS7通用。區(qū)別在于PKCS5明確定義Block的大小是8位,而PKCS7不確定
ANSIX923 填充字符串由一個字節(jié)序列組成,此字節(jié)序列的最后一個字節(jié)填充字節(jié)序列的長度,其余字節(jié)均填充數(shù)字零 數(shù)據(jù): FF FF FF FF FF FF FF FF FFX923

到了這里,關(guān)于iOS-AES加解密各模式(ECB、CBC、CFB、OFB)的實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java實現(xiàn)數(shù)據(jù)加密:掌握DES CBC和ECB兩種模式

    DES算法是一種對稱加密算法,它使用相同的密鑰進(jìn)行加密和解密。DES算法是一種分組密碼,即將明文分成固定長度的塊,并對每個塊進(jìn)行加密。DES算法將每個64位的明文塊分成兩個32位的半塊,然后進(jìn)行一系列的加密和解密操作,最終得到一個64位的密文塊。 CBC(Cipher Block C

    2023年04月19日
    瀏覽(24)
  • iOS MT19937隨機(jī)數(shù)生成,結(jié)合AES-CBC加密算法實現(xiàn)。

    按處理順序說明: 1. 生成隨機(jī)數(shù)序列字符串函數(shù) 生成方法MT19937,初始種子seed,利用C++庫方法,生成: 2. 對第一部中的隨機(jī)數(shù)序列字符串進(jìn)行sha256加密,得到64字節(jié)的一個數(shù)據(jù)流函數(shù)。 ?3. AES-CBC加密解密方法 /* ? ? CCCrypt方法提供了CBC 和 ECB 兩種AES加密模式, ? ? 如果不傳

    2024年04月09日
    瀏覽(28)
  • 前端CryptoJS-AES加解密 對應(yīng)php的AES-128-CBC加解密踩坑(java也相同加解密)

    ?前端部分注意看填充是pkcs7 有個前提,要看前端有沒有轉(zhuǎn)成hex格式,如果沒轉(zhuǎn),php那邊就不需要調(diào)用特定函數(shù)轉(zhuǎn)hex格式的 后端php代碼

    2024年02月15日
    瀏覽(23)
  • C++使用openssl對AES-256-ECB PKCS7 加解密
  • 小程序AES加密ECB模式

    2024年02月09日
    瀏覽(26)
  • Python使用CBC加密模式進(jìn)行AES加密

    在這個示例中,我們使用了 cryptography 庫的 Cipher、algorithms、modes、backend 和 padding 模塊。 encrypt 函數(shù)接受明文字符串、密鑰和初始向量(IV)作為參數(shù)。 我們首先使用 Cipher 類來創(chuàng)建一個 AES 密碼器對象,指定所需的 AES 算法、CBC 加密模式和密鑰。然后,我們獲取密碼器的加密

    2024年01月24日
    瀏覽(34)
  • boringssl EVP_aes_128_ecb實現(xiàn)

    最近學(xué)習(xí)boringssl,發(fā)現(xiàn)沒找到EVP_aes_128_ecb在哪里實現(xiàn)的 饒了一大圈,發(fā)現(xiàn)它的定義很無語 隨便拿EVP_CIPHER_FUNCTION(128, cbc)展開 這里的 aes_128_cbc_generic 參考boringssl DEFINE_LOCAL_DATA 其實有方向的情況下可以用gcc -E ./src/crypto/fipsmodule/cipher/e_aes.c -o test.i?-I include/ -E,只執(zhí)行到預(yù)編譯,直

    2024年02月10日
    瀏覽(13)
  • 【ios】【android】3DES_CBC_PKCS5Padding加密、解密問題(附完整代碼)

    【ios】【android】3DES_CBC_PKCS5Padding加密、解密問題(附完整代碼)

    問題一:加密結(jié)果不一致 一、問題描述 實現(xiàn)了android的藍(lán)牙對接后開始著手ios的藍(lán)牙對接,出現(xiàn)了ios加密結(jié)果與在線加密的結(jié)果一致,而android的加密結(jié)果與甲方公司的結(jié)果一致的問題。 1.android部分代碼如下: 2.ios部分代碼如下: 二、問題解決 重新看了一遍android加密調(diào)用部

    2023年04月18日
    瀏覽(33)
  • ssh命令報錯no matching cipher found. Their offer: aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc

    執(zhí)行 ssh user@host 報錯,信息如下: 協(xié)議不匹配 可以使用如下命令 ssh -c aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc user@host 也可以修改 ~/.ssh/config文件 vi ~/.ssh/config 增加配置 Ciphers +aes128-cbc,aes192-cbc,aes256-cbc

    2024年02月13日
    瀏覽(21)
  • AES-128-ECB php兼容高低版本

    2024年02月09日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包