深度思维者

永远年轻,永远热泪盈眶

加密算法

进位&存储单位

一种计数的方法

  • 用有限的数字符号来表示无限的数值,例如阿拉伯数字的10进制(0-9)

  • 可使用的计数符号的数目决定了进位制,简称进制

    • 2进制(0,1),计算机机器语言唯一能明白的
    • 16进制(0-9,A,B,C,D,E,F),每一个16进制的字符代表4个人二进值组合的数字
  • 进制间的关系

    • 10进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    • 2进制: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000
    • 16进制:0 1 2 3 4 5 6 7 8 9 A B C E F
  • 计算机为什么不使用10进制而用2进制?
    为了稳定性!

计量术语

  • 位(bit)比特-- 最小的数据单位
  • 字节(Byte)--8个bit组成,存储空间最小的单位
  • k-kilo 表示千。1024 (2^10次方)
    ...

加密

Gnome-mime-text-x-copying.svg

对称加密

  • 用相同密钥对原文进行加密和解密
  • 加密过程: 密钥 + 原文 => 密文
  • 解密过程: 密文 - 密钥 => 原文
  • 缺点: 无法确保密钥被安全传递

非对称加密

公钥&私钥

  • 公钥用于加密,私钥用于解密
  • 公钥由私钥生成,私钥可以推导出公钥
  • 从公钥无法推导出私钥
  • 优点:解决了私钥传输中的安全性问题
  • Q: 解决了信息传递的问题,如何验证是"确实是发送方发送的, 信件没有被篡改"?
    • 通过数字签名

哈希- Hash

  • 将一段数据(任意长度)经过一道计算,转换为一段定长的数据

  • 不可逆性 - 几乎无法通过hash的结果推导出原文,即无法通过x的Hash值,而推导出x

    • 无法通过人的指纹瑞到处他是谁
  • 无碰撞性, 几乎没有可能找到一个y, 使得y的HASH值等于的hash值

    • 几乎没有两个人的指纹是一样的
  • 使用场景:

    • 校验文件的完整性
    • 服务器中使用hash存储用户名的密码
    • 数字签名

数字签名 - Digital Signature

目的 : 为了证明发送人是想要接收信息的人

一套数字签名通常定义两种互补的运算:

  • 一个用于签名(signature)
  • 另一个用于验证(verifily)

流程:

  • 发送方Tony: 发送消息原文"hello kitty"---T

    • a. 用接收方公钥(公开) 对原文进行加密成密文 A;

    • b. 用 哈希算法对原文哈希,生产原文的摘要 B

    • c. 使用发送方私钥原文摘要B签名得到消息 C

    • d. 发送方将密文A级签名消息C发送给接收方

    • Q1 使用私钥签名,用公钥解密获得原文,这就是问什么原文不能直接使用私钥签名,防止发送的原文信息泄露。

  • 接收方:

    • a. 接收方收到发送方发送的密文A及签名消息C
    • b. 接收方使用自己的私钥解密,获得原文T
    • c. 接收方将原文T进行哈希算法,生成哈希摘要B'
    • d. 用发送方的公钥对签名信息C进行解密获得摘要信息B
    • e. 比较哈希摘要B'与B是否一致,如果一致说明此消息是Tony发送
  • 图解

posted @ 2018-10-14 23:26  failymao  阅读(470)  评论(0编辑  收藏  举报