Cryptography
密码学的魅力是不可否认的,在这篇无用的小糟粕里,我只是想要尽可能记下有趣的密码学中我仅知的散发着该死的魅力的密码学相关知识。
雪崩效应
雪崩效应是一种不稳定的平衡状态也是加密算法的一种特征,它指明文或密钥的少量变化会引起密文的很大变化,就像雪崩前,山上看上去很平静,但是只要有一点问题,就会造成一片大崩溃。是加密算法(尤其是块密码和加密散列函数)的一种理想属性。当输入发生最微小的改变(例如,反转一个二进制位)时,也会导致输出的剧变(如,输出中一半的二进制位发生反转)。在高品质的块密码中,无论密钥或明文的任何细微变化都应当引起密文的剧烈改变。该术语最早由Horst Feistel使用,尽管其概念最早可以追溯到克劳德·香农(香农先生可真厉害)提出的 。
具体在哈希函数与AES的S盒里都有体现。
AES趣味图解
直接上原文网站A Stick Figure Guide to the Advanced Encryption Standard (AES)。
从这篇翻译博文十分钟读懂AES加密算法了解到的。
太长了就不转载辽。
AES加解密python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
import base64 from Crypto.Cipher import AES
def add_to_16(k): truewhile len(k)%16 != 0: truetruek += '\0' truereturn str.encode(k)
def Encrypt(): truekey = input() truetext = input() trueaes = AES.new(add_to_16(key),AES.MODE_ECB) truecipher_aes = aes.encrypt(add_to_16(text)) truecipher = str(base64.encodebytes(cipher_aes),encoding='utf-8') trueprint(cipher)
def Decrypt(): truekey = input() truecipher = input() trueaes = AES.new(add_to_16(key),AES.MODE_ECB) truecipher_base64de = base64.decodebytes(cipher.encode(encoding='utf-8')) truetext = str(aes.decrypt(cipher_base64de),encoding='utf-8').replace('\0','') trueprint(text)
if __name__ == '__main__': trueEncrypt() trueDecrypt()
|
CTF常用代码:
十六进制s与key
1 2 3 4 5 6 7 8 9 10 11 12 13
| import base64 from Crypto.Cipher import AES
s = '934d8706bed74cd6eea683c7be86b2eb'
key = '1b2e3546586e72869ba7b5c8d9efff0c'
aes = AES.new(bytes.fromhex(key), AES.MODE_ECB)
text_decrypted = aes.decrypt(bytes.fromhex(s))
print(text_decrypted+bytes.fromhex('32616562363039383965386433333531'))
|
RSA
详见另一篇文章RSA___Rivest&Shamir&Adleman
SKEY协议及其模拟实现
TBC…