整理密码学的系统性地基础知识(图解、密码原理、常用算法、openssl) - part2 密码原理和常用算法归类

1.   密码原理基础

1.1.   对称密码

说明:对称密码主要就是依据下面的”异或”运算实现加解密的,这里可以把数A假定为明文,数B假定为KEY,数C假定为密文。通过下面简单的异或运算,即可实现用同样的KEY将明文转换为密文,并将密文转换成明文了。另外也可以理解到实际使用时为什么要将对称密码算法和分组模式结合才能使用,因为多数对称密码(即分组类型的对称密码)能加密的明文长度是固定的,所以需要对明文进行分组迭代。

数A  XOR  数B = 数C

数C  XOR  数B = 数A

1.2.   公钥密码(RSA)

1.2.1.    RSA的加密解密

 

 

 

1.2.2.    RSA中密钥对的生成

(1)   求数N

用伪随机数生成器求pqpq都是质数

N = p * q

(2)   求数L

L = lcm(p-1, q-1);  lcm为求最小公倍数的函数

(3)   求数E

1 < E < L;

gcd(E, L) = 1;  gcd为求最大公约数的函数

(4)   求数D

1 < D < L;

 

E X D  mod L = 1;

 

1.2.3.    实践

Step1: 生成密钥对

(1)   N

准备两个质数,如p=17; q=19; N = p * q = 17 * 19 = 323;

(2)   L

L = lcm(p-1, q-1) = lcm(17-1, 19-1) = lcm(16, 18) = 144;

(3)   E

gcd(E, L) = 1;

满足条件的E有很低,如5,7,11,13,17,19,23,25,29,31,…

选择5作为E

(4)   D

E X D  mod L = 1

D29可以满足上面的公式,因为E X D  mod L = 5 X 29 mod 144 = 145 mod 144 = 1;

到这里我们已经生成了密钥对,即:

公钥: E=5, N=323;

私钥: D=29, N=323;

Step2:

要加密的明文必须是小于N的数,即小于323。假设要加密的明文为123 

加密:明文E mod N = 1235 mod 323; 所以密文就是225

 

解密: 密文D mod N = 22529 mod 323 = 123;

 

2.   常见算法归类

 

对称密码

公钥密码

数字签名

aes128,aes192,aes256

rsa

rsa

des,des-ede, des-ede3,3des,desx,

ElGamal

dsa

rijindael,rijindael128,rijindael192,rijindael256

Rabin

ElGamal

arcfour,arcfour128,arcfour256(流密码)

ECC(椭圆曲线密码)

Rabin

blowfish

 

 

cast128

 

 

chacha20-poly1305(流密码,既可加密也可认证)

 

 

chacha20(流密码)

 

 

单向散列函数

消息认证码

密钥交换

md4,md5

hmac-sha-1

diffie-hellman

sha,sha1,sha224,sha256,sha384,sha512

hmac-md5

rsa

whirlpool

hmac-ripemd

 

ripemd,ripemd-160

poly1305

 

 

posted on 2020-06-24 14:16  LiveWithACat  阅读(605)  评论(0编辑  收藏  举报