进位&存储单位
一种计数的方法
-
用有限的数字符号来表示无限的数值,例如阿拉伯数字的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次方)
...
加密
对称加密
- 用相同密钥对原文进行加密和解密
- 加密过程: 密钥 + 原文 => 密文
- 解密过程: 密文 - 密钥 => 原文
- 缺点: 无法确保密钥被安全传递
非对称加密
公钥&私钥
- 公钥用于加密,私钥用于解密
- 公钥由私钥生成,私钥可以推导出公钥
- 从公钥无法推导出私钥
- 优点:解决了私钥传输中的安全性问题
- 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发送
-
图解