密碼學基礎知識總結

密碼學基礎知識總結

一、Base編碼

1. Base系列特征

編碼類型字符集特征
Base160-9, A-F密文長度偶數
Base32A-Z, 2-7包含數字2-7
Base64a-z,0-9,+,/,=密文長度是8的倍數
Base36A-Z,0-9僅支持整數加密
Base910-9,a-z,A-Z,特殊符號高密度編碼
Base100Emoji表情表情符號組成

2. 典型題型

  • 疊套加密:多次Base編碼嵌套(如HNCTF 2022 Week1題目)
  • 換表加密:自定義字符映射表(如BJDCTF 2020題目)
    # 換表解密示例
    custom_table = "J K L M N O x y U V z A B C D E F G H 7 8 9 P Q I a b c d e f g h i j k l m W X Y Z 0 1 2 3 4 5 6 R S T n o p q r s t u v w + / ="
    standard_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
    cipher = "FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw"# 構建轉換字典
    trans = str.maketrans(custom_table, standard_table)
    standard_cipher = cipher.translate(trans)
    print(base64.b64decode(standard_cipher))
    

二、古典密碼

1. 替換密碼

  • 凱撒密碼:位移變換
    # 凱撒解密腳本
    def caesar_decrypt(cipher, shift):return ''.join([chr((ord(c)-ord('A')-shift)%26+ord('A')) if c.isupper() else chr((ord(c)-ord('a')-shift)%26+ord('a')) for c in cipher])
    
  • 埃特巴什碼:字母表鏡像映射(A?Z, B?Y…)
  • 簡單替換:隨機字母映射(需詞頻分析破解)

2. 移位密碼

  • 柵欄密碼
    明文: THEQUICKBROWNFOX
    2欄柵欄:
    T E U C B O N F XH Q I K R W O
    密文: TEUCBOFNXHQIKRWO
    
  • Playfair密碼:5×5矩陣雙字母加密
  • 維吉尼亞密碼:多表替換(需卡西斯基試驗破譯)

3. 特殊編碼

  • 社會主義核心價值觀編碼:中文詞語映射
  • 豬圈密碼:符號替代(如SWPUCTF 2021題目)

三、近代密碼

1. Enigma機

  • 德國二戰加密設備,通過轉子機械實現多表替換

四、現代密碼

1. 對稱密碼

算法密鑰長度模式特點
DES56位ECB/CBC已不安全
3DES168位三重加密仍在使用
AES128/192/256位ECB/CBC/GCM主流加密標準
# AES加密示例
from Crypto.Cipher import AES
key = b'16byteslongkey!!'
cipher = AES.new(key, AES.MODE_ECB)
ciphertext = cipher.encrypt(b'SecretMessage16')  # 需填充至16字節倍數

2. 非對稱密碼

  • RSA算法

    • 密鑰生成:( n = p \times q ), ( \phi(n)=(p-1)(q-1) ), 選擇e使( gcd(e,\phi(n))=1 ), 計算d滿足( ed \equiv 1 \mod \phi(n) )
    • 加密:( c \equiv m^e \mod n )
    • 解密:( m \equiv c^d \mod n )
    # RSA解密示例
    from Crypto.Util.number import long_to_bytes
    p = 152276107194759839394339252953668929833379494272797635215678777394989176086311370136035478447887926444275784082066390686965320698243113804043171803008108957334907494436138284735908220245791716231134027668300903468613086977898318244422816904811663818867009341751581380232066351461067404386138711392602905182327
    q = 165862216368738151171691047077971125385823304861583668749112440485286071513555171553668744837558717911342949436706045003893101207778257828156155579957939073590381726467515305197248665285721804095245979532718423232742857246879254699058634781094524194465195004455721760308439281036465034307352501227102299122599
    e = 65537
    c = 8714149934588122613890609205826559063957396235456334581066750104141833387128819259074228632737215784067681665337373847122241506740977460425676706234123688048971299968252735566083061567386357327514300746902937654004543191945690400727133317228366779579116882233771039719002815276546167694160681831378762223177951840415429867605824997691072569915435484862548063841182891523397571914055707256503122950455644515402154037908557382756498138387988939464887512595990270123841900640997837144301259531459279512993819808359480410211723491073722980281648910041025010174785548169983002872841283535091066006242941399443173584257860n = p * q
    phi = (p-1)*(q-1)
    d = pow(e, -1, phi)
    print(long_to_bytes(pow(c, d, n)))
    
  • ECC算法:基于橢圓曲線離散對數問題

3. 哈希函數

算法輸出長度特性
MD5128位已破解,不安全
SHA-1160位逐漸淘汰
SHA-256256位主流安全標準
  • MD5碰撞示例
    import hashlib
    hashlib.md5(b"message").hexdigest()  # 輸出32位16進制字符串
    

五、攻擊技術

  1. 密碼分析

    • 差分分析(針對DES)
    • 線性分析(針對AES)
    • 模數分解(針對RSA)
  2. 側信道攻擊

    • 計時攻擊(RSA加密時間差異)
    • 功耗分析(智能卡攻擊)
  3. 工具推薦

    • 在線解碼:CyberChef
    • 哈希查詢:CMD5
    • 密碼破解:Hashcat
建議配合實際CTF題目進行練習,重點關注:
- Base編碼的層層嵌套
- 古典密碼的詞頻分析
- RSA各攻擊場景的實現
- 現代密碼庫的正確調用方式

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

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

相關文章

PostgreSQL 中 pg_wal文件過多過大的清理方法及關鍵注意事項的總結

PostgreSQL 中 pg_wal文件過多過大的清理方法及關鍵注意事項的總結 以下是針對 PostgreSQL 中 pg_wal 文件過多過大的清理方法及關鍵注意事項的總結 一、安全清理 WAL 文件的完整流程 1. 確認數據庫和備份完整性 備份驗證:確保最近的物理備份(如 pg_base…

Django事務支持

1.事務概念 事務是一組不可分割的操作序列,這些操作要么全部執行,要么全部不執行。事務具有四個關鍵屬性,通常稱為 ACID 特性: 原子性(Atomicity):事務是一個不可分割的工作單位,事務…

<form> + <iframe> 方式下載大文件的機制

使用 <form> <iframe> 方式下載大文件的機制之所以穩定&#xff0c;核心在于其?分塊傳輸?和?瀏覽器沙箱隔離?設計。以下是技術原理詳解&#xff1a; 一、底層工作機制 ?分塊傳輸協議? 表單提交后&#xff0c;服務器按 Transfer-Encoding: chunked 分塊返回數…

Python--OCR(2)

一、明確 OCR 任務邊界首先定義 OCR 系統的核心目標&#xff1a;場景&#xff1a;印刷體&#xff08;如文檔、發票&#xff09;/ 手寫體&#xff08;如筆記&#xff09;/ 特定場景&#xff08;如車牌、身份證&#xff09;輸入&#xff1a;圖像格式&#xff08;JPG/PNG&#xff…

基于Django的計算機資源爬蟲及可視化系統的設計與實現

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景二、項目目標三、系統架構與技術選型四、系統功能模塊五、應用場景與價值六、項目特色與創新點七、總結每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試…

SH3001六軸傳感器應用(二)(IIC驅動開發)

一、前言我這邊使用的開發板原本已經做好了該sensor的驅動&#xff0c;但是使用過程中發現&#xff0c;原始驅動sensor是通過事件的方式上報的&#xff0c;加速度和陀螺儀數據并不同步&#xff0c;不滿足使用要求&#xff0c;只有重新寫一個iic的驅動&#xff0c;進行sensor數據…

面試題:基礎的sql命令

基礎的 SQL 命令主要用于對數據庫進行查詢、新增、修改、刪除等操作&#xff0c;可分為以下幾類&#xff1a;一、數據查詢&#xff08;SELECT&#xff09;用于從表中獲取數據&#xff0c;是最常用的命令。 基本語法&#xff1a;SELECT 列名1, 列名2... FROM 表名 WHERE 條件;示…

Leetcode-3488距離最小相等元素查詢

依舊二分&#xff0c;鏈接如下3488. 距離最小相等元素查詢 看題目是個循環數組&#xff0c;記得當時做過一道什么題也是循環數組&#xff0c;就想著直接數組復制一下&#xff0c;然后跟上一道題一樣&#xff0c;用hashmap來存儲value的值以及value對應下標的vector。 和靈神的…

C++中的關聯容器

文章目錄使用關聯容器定義關聯容器關鍵字類型的要求pair類型用作返回類型關聯容器上的操作關聯容器的迭代器關聯容器和算法添加元素刪除元素map的下標操作訪問元素無序容器對關鍵字的要求關聯容器支持高效的關鍵字查找和訪問。兩個主要的關聯容器的類型是map和set。其中map中的…

【Git】git提交代碼報錯Git: husky > pre-commit

git提交代碼報錯原因 這個問題是因為當你在終端輸入git commit -m “XXX”,提交代碼的時候,pre-commit(客戶端)鉤子&#xff0c;它會在Git鍵入提交信息前運行做代碼風格檢查。如果代碼不符合相應規則&#xff0c;則報錯&#xff0c;而它的檢測規則就是根據.git/hooks/pre-commi…

Unity開發者快速認識Unreal 的C++(六)GameMode之PlayerController

繼承關系&#xff1a;Aactor&#xff0c;INavAgentInterface <--- AController<--- PlayerController &#xff0c;PlayerController也是一個Actor,繼承了Actor的一些通用的屬性和工具函數下圖是PlayerController初始化組件的一個子階段從圖中可以得到的信息是&#xf…

Vue 3 服務端渲染(SSR)與客戶端渲染(CSR)的區別及解決方案

1. SSR與CSR的區別1.1. SSR的原理服務端渲染&#xff08;SSR&#xff09;是在服務器端將 Vue 組件渲染為 HTML 字符串&#xff0c;并將其發送給客戶端。這種方式與客戶端渲染&#xff08;CSR&#xff09;不同&#xff0c;后者是在瀏覽器中執行 JavaScript 來生成 HTML。在 SSR …

Matlab快速回顧

一1.數值 顯示 格式format style 設置eg: pi format longE;or2.清除指令clc 清除命令行窗口clear 清除工作區cls3.搜索路徑設置path(path,E:\ads\)oraddpath4.M文件用戶把要實現的命令寫在一個以.m為擴展的文件中&#xff0c;然后由matlab系統進行解讀&#xff0c;最后運行結果…

開源低代碼+AI引擎:百特搭企業級開發平臺的演進

在數字化轉型進入深水區的今天&#xff0c;企業應用開發面臨前所未有的復雜挑戰&#xff1a;既要快速響應業務需求&#xff0c;又要確保系統靈活可控&#xff1b;既要降低技術門檻&#xff0c;又要保障核心安全。傳統開發模式與單一形態的低代碼工具已難以滿足多層次需求。融合…

學習 Android(十五)NDK進階及性能優化

學習 Android&#xff08;十五&#xff09;NDK進階及性能優化 對 NDK 相關知識有了初步的了解之后&#xff0c;我們可以更加深入的去學習 NDK 相關知識&#xff0c;接下來&#xff0c;我們將按照以下步驟進行深入學習&#xff1a; 深入理解JNI調用過程和性能消耗常見 JNI 坑&am…

QT5.12.8 QTabWidget 透明樣式QSS

/* 設置QTabWidget本身 :不加也行*/ QTabWidget#aaa_tabwdt {background: transparent;border: none; /* 移除邊框可能有助于透明效果 */ }/* 標簽頁內的容器部件 :必須加&#xff0c;標簽也才會透明 */ QTabWidget#aaa_tabwdt QWidget, QTabWidget#aaa_tabwdt QFrame {backgro…

【FAQ】Script導出SharePoint 目錄文件列表并統計大小

一、只導出文件列表的方法 1) 保存腳本&#xff08;建議名&#xff1a;D:\tmp\Export-SharePoint-FileList.ps1&#xff09; <# 導出 SharePoint 指定文件夾&#xff08;含子文件夾&#xff09;的文件列表到 CSV&#xff08;不統計大小&#xff09; 前提&#xff1a;已安…

《Thinking in Java》讀書筆記---控制執行流程

就像有感知的生物一樣&#xff0c;程序必須在執行過程中控制它的世界&#xff0c;并做出選擇。在Java中&#xff0c;你要使用執行控制語句來作出選擇。一、流程控制基礎概念1.1 流程控制的重要性流程控制結構決定了程序執行的順序和邏輯分支&#xff0c;是編程語言中最基礎也是…

極驗 G-star 人才特訓營:為業務安全領域培養下一代新興力量

本文導讀 極驗為什么要啟動 G-star 實習生培養計劃&#xff1f;50多位來自多所高校的同學&#xff0c;在極驗經歷了一場怎樣的“非典型”實習&#xff1f;技術大咖親授&#xff0c;先培訓再實戰&#xff0c;極驗打造的是怎樣的人才體系&#xff1f;同學有話說&#xff1a;培養計…

攻防世界-web-csaw-mfw

一.題目分析這邊提示使用了Git&#xff0c;試著訪問.git看是否存在.git泄露瀏覽了一下&#xff0c;很多都是亂碼&#xff0c;想著用githack將git庫克隆下看一下二.操作python2 GitHack.py http://url/.git訪問了一下flag.php&#xff0c;沒啥發現&#xff0c;在看一下index.php…