跳转至

密码编码学

课程

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) 性质:

  1. 如果 n|(a-b),那么 a===b(mod n),反之应该也成立?
  2. 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))))


评论