River5tone

密码学小记

字数统计: 566阅读时长: 2 min
2018/12/25 Share

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
# -*- coding:UTF-8 -*-
#AES

import base64
from Crypto.Cipher import AES

#补足16的倍数
def add_to_16(k):
truewhile len(k)%16 != 0:
truetruek += '\0'
truereturn str.encode(k) #返回bytes

#加密
def Encrypt():
truekey = input() #密钥
truetext = input() #明文
trueaes = AES.new(add_to_16(key),AES.MODE_ECB) #初始化加密器,ECB模式
truecipher_aes = aes.encrypt(add_to_16(text)) #加密
truecipher = str(base64.encodebytes(cipher_aes),encoding='utf-8') #base64加密转码返回bytes转至字符串形式
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')) #解base64
truetext = str(aes.decrypt(cipher_base64de),encoding='utf-8').replace('\0','') #多余'\0'去掉
trueprint(text)

if __name__ == '__main__':
trueEncrypt()
trueDecrypt()
CTF常用代码:

十六进制s与key

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
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…

CATALOG
  1. 1. Cryptography
    1. 1.1. 雪崩效应
    2. 1.2. AES趣味图解
      1. 1.2.1. AES加解密python:
      2. 1.2.2. CTF常用代码:
    3. 1.3. RSA
    4. 1.4. SKEY协议及其模拟实现