密码编码学
课程¶
https://www.coursera.org/specializations/cyber-security?action=enroll#courses https://www.coursera.org/specializations/introduction-applied-cryptography https://www.coursera.org/specializations/applied-crypto https://www.coursera.org/learn/crypto https://www.coursera.org/learn/crypto2 https://www.cs.umd.edu/~jkatz/imc.html https://book.douban.com/subject/5954556/
分组密码¶
作用在 n 位明文分组上,产生 n 位密文分组,是 2^n 个不同明文分组的子集。每个明文分组对应一个密文分组,为可逆变换(非奇异变换),反之位不可逆变换,一共可以产生 2^n!个变换。
Feistel 密码结构¶
//TODO p49
混淆和扩散¶
干掉基于统计方法的密码分析,置换并不改变统计特征,混淆使得密文和密钥之间的统计关系更复杂,需要复杂的函数,线性代替增加不了混淆。
数论¶
同余¶
(a mod n)=(b mod n) 则称整数 a 和 b 是模 n 的同余,可以表示为 a===b(mod n) 性质:
- 如果 n|(a-b),那么 a===b(mod n),反之应该也成立?
- a===b(mod n),b===c(mod n) a===c(mod n)
欧几里得扩展算法¶
//TODO
AES¶
四个阶段,一个置换和三个代替: 字节代替:S 盒替换字节 行移位: 行移位,一个简单的置换 列混淆: 在 GF(2^n)上进行一个矩阵乘法 轮密钥加:按位 XOR
各种编码¶
base64¶
由于各种加密对base64表进行替换,使用python进行还原。
import base64
import string
str1 = "x2dtJEOmyjacxDemx2eczT5cVS9fVUGvWTuZWjuexjRqy24rV29q"
string1 = "ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))
本页面的全部内容在 CC BY-NC-SA 4.0 协议之条款下提供,附加条款亦可能应用。