速通python加密之AES加密

AES加密

AES加密(Advanced Encryption Standard,高級加密標準)是目前全球公認的最安全、應用最廣泛的對稱加密算法之一,于2001年被美國國家標準與技術研究院(NIST)確定為替代DES的標準加密算法,目前在金融、通信、軍事等安全敏感領域被廣泛采用。

AES加密的核心特點:

  1. 對稱加密特性
    加密和解密使用同一把密鑰,密鑰管理相對簡單(但需確保密鑰安全傳輸和存儲)。

  2. 密鑰長度可選
    支持3種密鑰長度:128位、192位、256位(對應加密強度依次提升),其中128位AES已能滿足絕大多數場景的安全需求,256位則常用于高安全級別場景(如金融、軍事)。

  3. 分組加密模式
    AES是分組加密算法,將明文按固定長度(128位,即16字節)分成若干組,逐組加密。實際應用中需結合加密模式(如CBC、GCM、ECB等)處理長文本,其中ECB模式因安全性缺陷(相同明文分組加密后結果相同)不推薦,GCM模式因支持認證加密(同時保證機密性和完整性)被廣泛使用。

  4. 安全性與效率平衡
    至今未被發現有效的數學破解方法,且加密/解密速度快,適合處理大量數據(如文件加密、數據庫加密),兼顧安全性和性能。

加密流程(簡化):

  1. 將明文按128位分組(最后一組不足16字節時需填充,如PKCS#7填充)。
  2. 每組明文與密鑰通過多輪(128位密鑰10輪、192位12輪、256位14輪)復雜運算(替換、移位、混合、加密鑰)生成密文分組。
  3. 拼接所有密文分組,得到最終密文。
    解密過程則是加密的逆操作,使用相同密鑰和模式還原明文。

應用場景:

  • 數據加密存儲:如用戶敏感信息(身份證、銀行卡號)在數據庫中的加密。
  • secure通信:如HTTPS協議中對稱加密階段(AES常作為數據傳輸的加密算法)、VPN加密通道。
  • 文件加密:如壓縮包加密、本地文件加密(如加密硬盤)。

示例(加密):

"""
@File    :03AES.py
@Editor  : 百年
"""
'''
pip install pycrypto 
pip install pycryptodome
對稱加密
所謂對稱加密就是加密和解密用的是同一個密鑰
條件:加密和解密用的是同一個密鑰,那么兩邊就必須擁有相同的鑰匙才可以打開
常見的對稱加密有aes,des,3des(3des)
'''
# AES'''
長度:
16:AES-128
24:AES-192
32:AES-256
'''
# 導入包 Cipher里邊是各種加密器
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad# step1:創建加密器
aes = AES.new(key=b'0123456789abcdef', mode=AES.MODE_CBC, iv=b'0123456789123456')
'''For ``MODE_CBC``, ``MODE_CFB``, and ``MODE_OFB`` it must be 16 bytes long.'''
'''
MODE_ECB 不需要IV
而MODE_CBC需要IV
IV長度為16
'''# step2:加密一段數據
s = '你好,世界,hello world'bs = s.encode('utf-8')  # important:注意傳入的是字節
bs = pad(bs, 16)  # 進行填充
bs = aes.encrypt(bs)
try:print(bs)# b' A\x84\x9dG\x02\xb5\xb1\xed\xc9\xb5jt\x85T}\xd9\x81{.tG\xf4Ag\xfam\xda\\\xb80\x01'# 加密后的結果是雜亂無章的字節
except BaseException as e:print(e)# ValueError: Data must be padded to 16 byte boundary in CBC mode# 數據必須是16的倍數,所以需要填充到16的倍數# 加密完的字節也是不能夠直接發送給服務器的,所以要將字節轉換為服務器能夠識別的字符串
# 也就用到了base64編碼
import base64res = base64.b64encode(bs).decode()
print(res)
# IEGEnUcCtbHtybVqdIVUfdmBey50R/RBZ/pt2ly4MAE=

示例(解密)

"""
@File    :AES解密.py
@Editor  : 百年
"""
#因為是對稱加密所以密鑰模式以及iv都得是一樣的
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad #有補長度就有反操作raw = 'IEGEnUcCtbHtybVqdIVUfdmBey50R/RBZ/pt2ly4MAE='#將數據還原成之前的字符串格式
aes = AES.new(key=b'0123456789abcdef',mode=AES.MODE_CBC,iv=b'0123456789123456')#注意如果想還原那么就得將其轉換為字節
import base64
b64s = base64.b64decode(raw)#解密之后unpaddecs = aes.decrypt(b64s)res = unpad(decs,16)
print(res.decode('utf-8'))
# 你好,世界,hello world
'''
解密和加密的步驟剛好是反著來的'''#important:
'''
有時候有的網頁會把IV寫成16進制的數字以0x開頭  
例如0xadifeabb1aifuoaea2
這時候就需要
import binascii
a2b_hex()可以將16進制數字轉換為字節
binascii.a2b_hex(去掉0x的剩余段adifeabb1aifuoaea2)
b2a_hex()可以將字節轉換為16進制數字
binascii.b2a_hex()
其實區分iv到底是16進制還是base64字符串有很好的辦法
就是看組成,因為0x的字母是a-f,所以絕對不可能有大于f的出現'''

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

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

相關文章

Java 對象秒變 Map:字段自由伸縮的優雅實現

前言 在開發中,我們常常需要把對象轉成 Map 格式,用于序列化、傳輸、展示,甚至硬塞給某些第三方框架吃進去再吐出來。乍一看很簡單,字段多起來后就像打翻調色盤,維護起來一不小心就翻車。想優雅地搞定這事,必須有一套穩妥、可擴展的方案,才能寫出讓同事膜拜、領導點贊、…

激光雷達-相機標定工具:支持普通相機和魚眼相機的交互式標定

激光雷達-相機標定工具:支持普通相機和魚眼相機的交互式標定 前言 在自動駕駛、機器人導航等領域,激光雷達和相機的標定是一個基礎而重要的問題。準確的標定結果直接影響后續的感知算法性能。本文將介紹一個開源的激光雷達-相機標定工具,支持…

linux shell從入門到精通(二)——變量操作

1.什么是變量變量在許多程序設計語言中都有定義,與變量相伴地有使用范圍地定義。Linux Shell也不例外。變量,本質上就是一個鍵值對。例如:str“hello”就是將字符串值“hello”賦予鍵str。在str地使用范圍內,我們都可以用str來引用…

[Linux入門] 初學者入門:Linux DNS 域名解析服務詳解

目錄 一、域名服務基礎:從 “名字” 到 “地址” 的轉換 1??什么是域名? 2??什么是 DNS? 3??DNS 用 TCP 還是 UDP? 二、DNS 服務器:各司其職的 “導航站” 1??根域名服務器 2??頂級域名服務器 3??權…

iview表單驗證一直提示為空的幾個原因?

1.Form上的rules是否配置正確; 2.Form-item的prop是否配置正確; 3.規則的名稱和input的v-model是否對應; 4.驗證的字段是否響應,新增字段使用this. $set. © 著作權歸作者所有,轉載或內容合作請聯系作者 平臺聲明&#xff1…

SpringBoot3(若依框架)集成Mybatis-Plus和單元測試功能,以及問題解決

一、Mybatis-Plus集成 新增依賴到父級pom.xml,原先的mybatis依賴可以不動需要注意 mybatis-plus與mybatis版本之間的沖突,不要輕易改動依賴,不然分頁也容易出現問題分類頂級pom.xml下面,如果沒有引入還是出現報錯,在co…

刪除遠程分支上非本分支的提交記錄

要刪除遠程分支上非本分支的提交記錄(即主分支的提交歷史),需要使用 Git 的重寫歷史功能。以下是完整解決方案: 解決方案步驟: 創建干凈的新分支(基于主分支最新提交) # 切換到主分支并更新 git…

Flask input 和datalist結合

<input list"categories" name"category" id"category" class"form-control" placeholder"任務分類" required> 這段代碼是一個 HTML 輸入控件&#xff0c;結合了 <input> 和 <datalist>&#xff0c;用來…

嵌入式分享#27:原來GT911有兩個I2C地址(全志T527)

最近在調試全志T527的觸摸功能時&#xff0c;發現GT911觸摸芯片的I2C地址有時是0x5d&#xff0c;有時又識別成0x14&#xff0c;不知道大家有沒有遇到過類似這個情況。雖然最后使用0x5d地址調通了觸摸功能&#xff0c;但是一直還是很困惑&#xff0c;為什么會出現0x14和0x5d兩個…

Linux運維新人自用筆記(Rsync遠程傳輸備份,服務端、郵箱和客戶端配置、腳本)

內容全為個人理解和自查資料梳理&#xff0c;歡迎各位大神指點&#xff01;每天學習較為零散。day24一、Rsync傳輸文件#安裝rsync#-a遞歸同步&#xff08;包含子目錄&#xff09;保留文件權限、所有者、組、時間戳等元數據 #??-z傳輸時壓縮數據 #??-v顯示詳細同步過程 #??…

以 “有機” 重構增長:云集從電商平臺到健康生活社區的躍遷

當電商行業陷入流量爭奪的紅海&#xff0c;同質化運營模式難以突破增長瓶頸時&#xff0c;云集以從精選電商到有機生活平臺的戰略轉型&#xff0c;開辟出差異化發展路徑。其轉型并非憑經驗決斷的孤例&#xff0c;而是建立在對市場趨勢的精準研判、用戶需求的深度解碼&#xff0…

【2025最新版】midjourney小白零基礎入門到精通教程!人工智能繪圖+AI繪圖+AI畫圖,一鍵出圖教程 (持續更新)

前言 現在市面上相關的AI繪畫工具非常多&#xff0c;有6pen.art、Stable Diffusion、DALL.E、Midjourney等。 而MJ就目前而言&#xff0c;它是一款強大的人工智能工具&#xff0c;旨在幫助設計師和創意人員完成各種設計任務。 非常適合我們圖像工作者&#xff0c;從 UI 設計到…

2025年滲透測試面試題總結-2025年HW(護網面試) 70(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 2025年HW(護網面試) 70 一、自我介紹 二、同源策略 & 三大漏洞對比解析 1. 同源策略&#xff08;SOP&…

加權卡爾曼濾波

加權卡爾曼濾波融合&#xff0c;它通過給不同傳感器或估計結果分配不同的權重&#xff0c;來提高狀態估計的精度和可靠性。一、卡爾曼濾波1.狀態方程2.觀測方程其中&#xff1a;基本方程①狀態一步預測②狀態估計③濾波增益④一步預測均方差⑤估計均方誤差二、加權卡爾曼濾波對…

【世紀龍科技】新能源汽車維護與故障診斷-汽車專業數字課程資源

在職業院校汽車專業教學中&#xff0c;理論與實踐脫節、設備投入不足、學生實操能力薄弱等問題長期存在。如何讓學生在有限的教學資源下掌握新能源汽車核心技術&#xff1f;如何讓教師更高效地開展理實一體化教學&#xff1f;《新能源汽車維護與故障診斷》數字課程資源&#xf…

Windows Server系統安裝JDK,一直卡在“應用程序正在為首次使用作準備,請稍候”

一、背景 第二次遇到這個問題了&#xff0c;但是居然沒想起來之前遇到過&#xff0c;又問元寶給的答案不對&#xff0c;還沒想起來之前收藏過解決方案&#xff0c;這里特別記錄一下。 二、問題描述 操作系統是Windows Sever2019&#xff0c;安裝JDK時卡住一直過不去&#xff0…

機器學習入門:線性回歸詳解與實戰

線性回歸&#xff08;Linear Regression&#xff09;是機器學習中最基礎也最常用的算法之一&#xff0c;無論是初學者入門還是實際業務場景&#xff0c;都能看到它的身影。本文將從概念、原理到代碼實現&#xff0c;帶你全方位了解線性回歸。一、什么是線性回歸&#xff1f;簡單…

第3篇:軟鏈接 mklink /D 教程:輕量緩存目錄遷移利器

我們通過諸多實踐后將三種鏈接方案分別獨立成篇&#xff0c;可以讓不同需求場景的讀者精準獲取所需內容。下面是回顧我們文章系列策劃的三篇博客標題、定位和詳細大綱&#xff0c;每篇都圍繞一個核心方案展開&#xff0c;具備教學性、實用性和實操性&#xff1a; &#x1f4d8;…

力扣 hot100 Day52

124. 二叉樹中的最大路徑和 二叉樹中的 路徑 被定義為一條節點序列&#xff0c;序列中每對相鄰節點之間都存在一條邊。同一個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含一個 節點&#xff0c;且不一定經過根節點。 路徑和 是路徑中各節點值的總和。 給你一個二叉…

數據存儲:OLAP vs OLTP

下面系統性地進行介紹,包括OLAP數據庫的基本概念、特點、常見產品,以及它們在實際工作中的典型應用場景,最后對比與關系型數據庫(OLTP)的區別。 一、OLAP數據庫是什么? OLAP(Online Analytical Processing,聯機分析處理)數據庫,主要用于大數據量、多維度、復雜查詢與…