一、简介
1、起源:古代用于战争,传递信息之前加密棒。
(1)、移位法
做两根一样加密棒,缠绕加密棒可以得到正确信息
(2)、替换法
有一本密钥本,里面记录着密文中文字真正对应的内容
2、分类:对称加密和非对称加密
(1)对称加密:
加密和解密的密钥是同一个,例如DES、IDEA、RC4、RC5、RC6 和 AES ,DES密钥太短容易被破解,基本弃用,AES用的更多。
优点:算法公开、计算量小、加密速度快、加密效率高
缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
(2)非对称加密:
加密和解密密钥不一样,是一对,公钥和私钥,例如:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)等
优点:安全,私钥破解难度较大(数学难题,数论等),利于传输,公钥可以完全公开
缺点:速度较慢,并且不像对称加密,非对称加密有可能会被利用公钥,伪装发送者,误导接收者。通常解决方案是 会配上数字签名
二、非对称加密
1、加密:
发送者持有自身 私钥 和 接收者公钥,接收者 持有自身私钥 和 发送者公钥。 发送者 用 公钥 通过 加密算法加密,生成密文,接收者用自身私钥 通过 加密算法 解密。
流程图如下
2、数字签名:
发送者持有自身 私钥 和 接收者公钥,接收者 持有自身私钥 和 发送者公钥。
(1)、简单版
发送者用发送者私钥 通过 加密算法 得到数字签名,接收者用发送者的公钥 通过加密算法 得到原文,证明是发送者发起的签名,别人无法伪造。
(2)、为了更方便验证,一般会把数字签名和 原文一起发送给接收者,接收者得到原文后和之前原文对比,看是否相同。
(3)、流程图如下
数字签名主要为了证明 来源,加密算法主要是为了 对原数据进行保护
3、加密+数字签名:
数字签名习惯把 原文 + 数字 签名 发送给 对方, 如果为了 解决 非对称加密,被第三方伪装,所以会使用 密文+数字签名的方式, 密文 得到 原文 ,和 数字签名得到原文 ,一样,就证明了 这密文是 对方发送的。
两者结合是更加安全的
三、摘要算法(Hash算法)
Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等