cryptography

密码学

2023年5月20日
202305
202305, cryptography

reference # cryptography https://learn-cryptography.readthedocs.io/zh/latest/basic/ https https://www.bilibili.com/video/BV1KY411x7Jp/?spm_id_from=333.337.search-card.all.click&vd_source=dfa9bf517c1718c832302c15f80df948 密码学 # 凯撒密码: 平移 置换密码: 替换 通过letter frequency分析, 可以破解 one-time pad: 一次性密码本 import random def generate_key(n): return bytes([random.randrange(0, 256) for i in range(n)]) def xor(key, message): return bytes([key[i % len(key)] ^ message[i] for i in range(len(message))]) message = b"ATTACK" key = generate_key(len(message)) print("Key: ", key) cipher = xor(key, message) print(cipher) plain_text = xor(key, cipher) print(plain_text) # 伪随机(线性同余) m = 2 ** 31 a = 1103515245 c = 12345 def lcg(a, c, m, seed): return (a * seed + c) % m seed = 1 for _ in range(10): seed = lcg(a, c, m, seed) print(seed) 流密码 ...