AES加密算法及AES-CMAC原理白話版系統解析

本文框架

  • 前言
  • 1. AES加密理論
    • 1.1 不同AES算法區別
    • 1.2 加密過程介紹
      • 1.2.1 加密模式和填充方案選擇
      • 1.2.2 密鑰擴展
      • 1.2.3分組處理
      • 1.2.4多輪加密
        • 1.2.4.1字節替換
        • 1.2.4.2行移位
        • 1.2.4.3列混淆
        • 1.2.4.4輪密鑰加
    • 1.3 加密模式
      • 1.3.1ECB模式
      • 1.3.2CBC模式
      • 1.3.3CTR模式
      • 1.3.4CFB模式
      • 1.3.5 OFB模式
    • 1.4填充方案
      • 1.4.1 PKCS5Padding
      • 1.4.2 PKCS7Padding
      • 1.4.3 ZEROPadding
      • 1.4.4 X923Padding
      • 1.4.5 ISO7816_4Padding
      • 1.4.6 ISO10126Padding
      • 1.4.7 NonePadding
  • 2.AES-CMAC
    • 2.1AES-CMAC原理
      • 2.1.1子密鑰計算(K1/K2生成)
      • 2.1.2 AES128-CMAC計算
      • 2.1.3填充方式
    • 2.2 AES128-CMAC應用

前言

AES(Advanced Encryption Standard)算法是一種對稱加密算法,由美國國家標準與技術研究院(NIST)在2001年發布,旨在取代早期的數據加密標準(DES),并提供更高的安全性,目前該算法被廣泛應用于各種安全需求中,AES算法以其高度的安全性和效率成為目前最流行的對稱加密算法之一。
其實網絡上有很多前輩已經寫了很多關于AES加密算法,模式,填充規則等文章,但是大家的側重點不同,在系統學習時很難把這些知識串起來,所以才有了本文對AES不同加密算法,加密模式,加密原理,填充算法及AES-CMAC算法的系統介紹,如果你的總結歸納能力比較強,也可以自己來整理,或者借助本文來輔助一下。
先祭出AES加密算法的加解密基本流程:
在這里插入圖片描述
AES加密函數為E,則 C = E(K, P),其中P為明文,K為密鑰,C為密文。
AES解密函數為D,則 P = D(K, C),其中C為密文,K為密鑰,P為明文。

1. AES加密理論

1.1 不同AES算法區別

AES根據密鑰長度的不同有:AES128,AES192,AES256三種算法,對應的密鑰長度分別對應于AES-128、AES-192和AES-

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37711.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37711.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37711.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redis 單節點數據如何平滑遷移到集群中

目的 如何把一個redis單節點的數據遷移到 redis集群中 方案&#xff1a; 使用命令redis-cli --cluster import 導入數據至集群 --cluster-from <arg>--cluster-from-user <arg> 數據源用戶--cluster-from-pass <arg> 數據源密碼--cluster-from-askpass--c…

css_22_過渡動畫

一.過渡 transition-property 作用&#xff1a;定義哪個屬性需要過渡。結構&#xff1a; transition-property: all; 常用值&#xff1a; 1.none&#xff1a;不過渡任何屬性。 2.all&#xff1a;過渡所有能過渡的屬性。 3&#xff0e;具體某個屬性名&#xff0c;例如&#xf…

駕校預約小程序系統的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;學員管理&#xff0c;教練管理&#xff0c;駕校信息管理&#xff0c;駕校車輛管理&#xff0c;教練預約管理&#xff0c;考試信息管理 微信端賬號功能包括&#xff1a;系統首頁&#xff0c;駕校信息&a…

Java基礎——五、繼承

五、繼承 簡要 1、說明 繼承(Inheritance)是面向對象編程(OOP)的一個核心概念&#xff0c;它允許一個類(子類)繼承另一個類(父類)的屬性和方法&#xff0c;從而實現代碼重用和結構化組織。通過繼承&#xff0c;子類可以擴展父類的功能或者對父類的方法進行重寫。 父類(超類…

基于docker安裝redis服務

Redis是我們在項目中經常需要使用的緩存數據庫&#xff0c;安裝redis的方式也有很多&#xff0c;本文主要是給大家講解如何基于docker進行redis服務的安裝&#xff0c;主要介紹&#xff0c;如何拉取redis鏡像、如何掛載redis的數據以及使用redis的配置文件和開啟認證等功能&…

steam社區載入失敗、加載不出來、打不開?

隨著steam夏季大促的到來&#xff0c;最近steam在線用戶越來越多了&#xff0c;很多玩家在自己喜歡的游戲社區里看最新的玩法、攻略和玩家的游戲心得。不過有不少玩家表示有時候會打不開游戲社區或是社區加載失敗等問題。根據大家遇到的問題&#xff0c;這里總結了幾種解決方法…

構建現代醫療:互聯網醫院系統源碼與電子處方小程序開發教學

本篇文章&#xff0c;筆者將探討互聯網醫院系統的源碼結構和電子處方小程序的開發&#xff0c;幫助讀者更好地理解和掌握這些前沿技術。 一、互聯網醫院系統源碼結構 互聯網醫院系統通常由多個模塊組成&#xff0c;每個模塊負責不同的功能。以下是一個典型的互聯網醫院系統的主…

基于C語言的Jacobi迭代和Gauss-Seidel迭代的方程組求解實現

文章目錄 Jacobi迭代方法介紹Gauss-Seidel迭代方法介紹具體代碼實現示例題目實現效果 Jacobi迭代方法介紹 Jacobi迭代法是一種簡單的迭代求解方法&#xff0c;適用于嚴格對角占優矩陣。其基本思想是利用當前迭代步的已知解來更新下一個迭代步的解。在C語言實現中&#xff0c;我…

商協會小程序如何提升商協會形象?

商協會小程序在提升商協會形象方面扮演著重要角色。以下是關于商協會小程序如何提升商協會形象的一些場景分析&#xff1a; 1、數字化名片與品牌形象展示 小程序可以作為商協會的數字名片&#xff0c;通過展示商會文化、活動信息和會員服務&#xff0c;有效提升商會的品牌形象…

鏈表反轉的兩種方式

鏈表反轉的兩種方式 1.頭插法 先創建一個新的鏈表&#xff0c;然后不斷遍歷我們想要反轉的鏈表&#xff0c;再一個一個使用頭插法插入到我們新建立的鏈表中&#xff0c;這樣鏈表就倒置了。 LinkList Reverse(LinkList re) {LinkList n;n (LinkList)malloc(sizeof(LNode));n…

C語言代碼風格

程序文件的說明&#xff0c;一般放在文件頭部注釋。 用來描述文件的作用、作者、日期等信息。一般格式如下&#xff1a; /** 文件名&#xff1a;filename.c* 功能&#xff1a;簡要描述文件的功能或作用* 作者&#xff1a;作者姓名* 日期&#xff1a;創建日期或最近修改日期*/…

Textual Learning2 -- 使用時的小問題

1、出現的問題&#xff1a; 在vscode里面直接運行函數會顯示報錯&#xff1a; 我嘗試在vscode中含textual庫的環境下運行&#xff0c;但仍然報錯 2、解決方案&#xff1a; 在命令行中運行&#xff1a; 首先按winR&#xff0c;輸入cmd打開命令行 或在已經安裝的conda環境&a…

古人的智慧結晶——水銃:揭秘明清時期的消防神器

明代的《奇器圖說》是一本記錄了當時各種奇巧機械的著作&#xff0c;而水銃則是書中記載的一項令人驚嘆的發明&#xff0c;它不僅展示了古人對物理原理的深刻理解&#xff0c;更是早期消防技術的一個縮影。 水銃&#xff0c;這個名字聽起來似乎有些陌生&#xff0c;但在古代&am…

在數據庫水平擴展中,名人問題(Celebrity Problem)也被稱為熱點鍵問題(Hotspot Key Problem)。

在數據庫水平擴展中&#xff0c;名人問題&#xff08;Celebrity Problem&#xff09;也被稱為熱點鍵問題&#xff08;Hotspot Key Problem&#xff09;。這是指某些特定的鍵&#xff08;例如名人或非常受歡迎的內容&#xff09;會導致某個分片&#xff08;shard&#xff09;被過…

電腦文件kernel32.dll缺失要怎么處理?怎么才能一鍵修復kernel32.dll文件

關鍵系統文件kernel32.dll的缺失&#xff0c;這種情況不僅會導致系統運行不穩定&#xff0c;甚至可能完全無法啟動某些應用程序。kernel32.dll 是一個至關重要的動態鏈接庫文件&#xff0c;它與Windows操作系統的多個基本操作相關聯&#xff0c;包括內存管理、進程和線程的控制…

dledger原理源碼分析系列(二)-心跳

簡介 dledger是openmessaging的一個組件&#xff0c; raft算法實現&#xff0c;用于分布式日志&#xff0c;本系列分析dledger如何實現raft概念&#xff0c;以及dledger在rocketmq的應用 本系列使用dledger v0.40 本文分析dledger的心跳 關鍵詞 Raft Openmessaging 心跳/…

C++中的常成員函數

2024年6月29日&#xff0c;周日下午 例如&#xff0c;以下是一個常成員函數的示例&#xff1a; class MyClass { public:int getValue() const {return value;} private:int value; };常成員函數是C中一種特殊的成員函數&#xff0c;它具有以下特點&#xff1a; 不可修改對象…

Flink Window DEMO 學習

該文檔演示了fink windows的操作DEMO 環境準備&#xff1a; kafka本地運行&#xff1a;kafka部署自動生成名字代碼&#xff1a;隨機名自動生成隨機IP代碼&#xff1a;隨機IPFlink 1.18 測試數據 自動向kafka推送數據 import cn.hutool.core.date.DateUtil; import com.alibab…

技術賦能教育:校園3D電子地圖與AR導航解決方案

隨著高考的落幕&#xff0c;又一批新鮮血液即將注入大學校園。面對陌生的環境&#xff0c;如何快速適應、準確找到目標地點&#xff0c;成為新生們的一大難題。同時&#xff0c;對于學校而言&#xff0c;如何向報考人員直觀展示校園環境&#xff0c;提供沉浸式參觀體驗&#xf…

Mybatis-Plus學習|快速入門CRUD、主鍵生成策略(雪花算法、主鍵自增等)、自動填充、樂觀鎖、分頁插件、邏輯刪除

MyBatisPlus概述 為什么要學習它呢?MyBatisPlus可以節省我們大量工作時間&#xff0c;所有的CRUD代碼它都可以自動化完成! JPA、tk-mapper、MyBatisPlus 偷懶的! MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具&#xff0c;在 MyBatis 的基礎上只做增強不做改變&#xff…