安全相关概念: 加密 Encrypt
与 哈希 Hash
Encrypt
- 加密的概念:简单来说就是一组含有
参数 k
的变换 E
。信息 m
通过变换 E
得到c = E(m)
。原始信息 m 为明文
,通过变换得到的信息 c 为密文
。从明文得到密文的过程叫做加密
,变换 E
为加密算法
,参数 k
称作秘钥
。同一个加密算法,可以取不同的密钥,得出不同的加密结果。从密文 c
恢复明文 m
的过程称作解密
,解密算法 D
是加密算法 E
的逆运算。解密算法也有参数,称作解密算法的秘钥。 - 加密的方式:
私钥密码 - 对称加密
和公钥密码 - 非对称加密
私钥密码
又称对称密钥加密
这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。
私钥加密的秘钥是对称的,只要知道加密秘钥就能推出解密秘钥(所以称为 对称加密
)。
常见的对称加密算法有: DES
、 3DES
、 AES
、 Blowfish
、 IDEA
、 RC5
和 RC6
公钥加密
概念
这种密码是非对称的,也就是说,不能从加密密钥推算出解密密钥,所以又称之为 非对称加密
。加密密钥不需要保密,可以公开,称之为 公钥
,只需要保守解密秘钥称之为 私钥
。公钥和私钥是成对的。常见的非对称加密算法有: RSA
、 Elgamal
、 背包算法
、 Rabin
、 D-H
、 ECC
。
加密和认证
加密
是保证数据的安全性认证
是确保用户的真实性。只有通信双方确定是真正要通信的双方,通信才有进行下去的必要
加密过程
Bob
将他的公钥传送给Alice
Alice
用Bob
的公钥加密她的消息,然后传送给Bob
Bob
用他的私钥解密Alice
的消息
** Alice
使用 Bob
的公钥进行加密, Bob
用自己的私钥进行解密**
认证过程
Alice
有一对公私钥, Alice
想让 Bob
知道自己是真实的 Alice
,而不是假冒的,整个身份认证的过程如下:
Alice
用她的私钥对文件加密,从而对文件签名
Alice
将签名的文件传送给Bob
Bob
用Alice
的公钥解密文件,从而验证签名
** Alice
使用自己的私钥加密, Bob
用 Alice
的公钥进行解密**
思考
如何保证 公钥
的安全
对比
Hash
哈希 (Hash)
是将目标文本转换成具有 相同长度
的、 不可逆
的杂凑字符串(或叫做 消息摘要
),而 加密 (Encrypt)
是将目标文本转换成具有 不同长度
的、 可逆
的 密文
。
两者有如下重要区别:
- 哈希算法往往被设计成生成具有相同长度的文本,而加密算法生成的文本长度与明文本身的长度有关
- 哈希算法是不可逆的,而加密算法是可逆的