密码学基础知识总结

一、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…