2020-03-30

常用加密算法

一、对称加密

1.定义

需要加密大量数据

2.工作过程

3.常用的算法

DES

秘钥:8个字节

3DES

AES

https://blog.csdn.net/lrwwll/article/details/78069013

在实际开发过程中要注意的地方

  • 服务端和客户端必须使用一样的秘钥和初始化向量(IV)
  • 服务端和客户端必须使用一样的加密模式
  • 服务端和客户端必须使用一样的padding模式

在python中使用

PyCrypto

PyCryptodome

https://pycryptodome.readthedocs.io/en/latest/src/introduction.html

二、非对称加密

1.定义

公钥,私钥 ssh

2.特点

不会用来加密大量数据,和对称加密结合,用来加密对称加密的秘钥

3.工作原理

4.常用算法

RSA

算法原理

RSA算法基于一个十分简单的数论事实,将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难。,因此,将乘积作为公开加密秘钥。

RSA的加密解密过程非常简单:

公钥 (n,e)
私钥 (n,d)
加密 密文 = (明文^e)%n
解密 明文=(密文^d)%n

秘钥的生成步骤

  1. 随机选择两个不想等的质数p和q

    选择61,53 实际应用中,越大越好

  2. 计算p和n的乘积

    n = 61*53=3233

    n的长度就是秘钥的长度,实际应用RSA秘钥一般是1024位,重要场合2048位

  3. 计算n的欧拉函数φ(n)

    φ(n) = (p-1)*(q-1) = 60 * 52=3120

  4. 随机选择一个整数e,条件是 1 < e < φ(n), 且 e与 φ(n) 互质

    随机选了 17 ,实际应用中,常常选 65537

  5. 计算e对φ(n)的模反元素d

    所谓的模反元素就是指有一个整数d,一是的ed被φ(n)*除,余数为1

    e*d - 1 = k * φ(n)

    e*x + φ(n) * y = 1

    17x +3120y = 1

    x = 2753

    y = -15

    d = 2753

    计算完毕

  6. 将n和e封装成公钥,n和d封装是秘钥

    100

在python中使用RSA

三、hash(摘要算法)复习

1.定义

​ 不定长输入,定长输出

2. 特点

  • 不可逆
  • 定长输出
  • 抗修改
  • 强碰撞性

3.应用领域

  • 一致性校验
  • 数字签名
  • 安全访问认证

4.常用算法

md5

sha家族

sha-1 sha-224 sha-256 sha -384 sha-512

你可能感兴趣的:(2020-03-30)