数字签名、信息加密 是前后端开发都经常需要使用到的技术 , 应用场景包括了用户登入、交易、信息通讯、oauth 等等
文章插图
1.数字签名数字签名 , 简单来说就是通过提供 可鉴别 的 数字信息 验证 自身身份 的一种方式 。
一套 数字签名 通常定义两种 互补 的运算 , 一个用于 签名 , 另一个用于 验证 。
文章插图
使用场景:
1. 验证数据被篡改 。
2. 验证身份 。
2. 加密和解密2.1. 加密
数据加密 的基本过程 , 就是对原来为 明文 的文件或数据按 某种算法 进行处理 , 使其成为 不可读 的一段代码 , 通常称为 “密文” 。通过这样的途径 , 来达到 保护数据 不被 非法人窃取、阅读的目的 。
2.2. 解密
加密 的 逆过程 为 解密 , 即将该 编码信息 转化为其 原来数据 的过程 。
3. 对称加密和非对称加密加密算法分 对称加密 和 非对称加密 , 其中对称加密算法的加密与解密 密钥相同 , 非对称加密算法的加密密钥与解密 密钥不同 , 此外 , 还有一类 不需要密钥 的 散列算法 。
常见的 对称加密 算法主要有 DES、3DES、AES 等 。
常见的 非对称算法 主要有 RSA、DSA 等 , 散列算法 主要有 SHA-1、MD5 等 。
3.1. 对称加密对称加密算法 是应用较早的加密算法 , 又称为 共享密钥加密算法 。在 对称加密算法 中 , 使用的密钥只有一个 , 发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密 。这就要求加密和解密方事先都必须知道加密的密钥 。
文章插图
数据加密过程:在对称加密算法中 , 数据发送方 将 明文 (原始数据) 和 加密密钥 一起经过特殊 加密处理 , 生成复杂的 加密密文 进行发送 。
数据解密过程:数据接收方 收到密文后 , 若想读取原数据 , 则需要使用 加密使用的密钥 及相同算法的 逆算法 对加密的密文进行解密 , 才能使其恢复成 可读明文 。
3.2. 非对称加密非对称加密算法 , 又称为 公开密钥加密算法 。
它需要两个密钥 , 一个称为 公开密钥 (public key) , 即 公钥 , 另一个称为 私有密钥 (private key) , 即 私钥 。
因为 加密 和 解密 使用的是两个不同的密钥 , 所以这种算法称为 非对称加密算法 。
文章插图
如果使用 公钥 对数据 进行加密 , 只有用对应的 私钥 才能 进行解密 。
如果使用 私钥 对数据 进行加密 , 只有用对应的 公钥 才能 进行解密 。
例子:甲方生成 一对密钥 并将其中的一把作为 公钥 向其它人公开 , 得到该公钥的 乙方 使用该密钥对机密信息 进行加密 后再发送给甲方 , 甲方再使用自己保存的另一把 专用密钥 (私钥) , 对 加密 后的信息 进行解密 。
4. 常见的签名加密算法4.1. MD5算法MD5 用的是 哈希函数 , 它的典型应用是对一段信息产生 信息摘要 , 以 防止被篡改 。严格来说 , MD5 不是一种 加密算法 而是 摘要算法 。无论是多长的输入 , MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符) 。
4.2. SHA1算法SHA1 是和 MD5 一样流行的 消息摘要算法 , 然而 SHA1 比 MD5 的 安全性更强 。对于长度小于 2 ^ 64 位的消息 , SHA1 会产生一个 160 位的 消息摘要 。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言) , 可以被应用在检查 文件完整性 以及 数字签名 等场景 。
4.3. Hmac算法HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code) , HMAC 运算利用 哈希算法 (MD5、SHA1 等) , 以 一个密钥 和 一个消息 为输入 , 生成一个 消息摘要 作为 输出 。
HMAC 发送方 和 接收方 都有的 key 进行计算 , 而没有这把 key 的第三方 , 则是 无法计算 出正确的 散列值的 , 这样就可以 防止数据被篡改 。
推荐阅读
- hcv阳性是什么意思?
- 冬天别再这样加玻璃水了!小心毁掉你的喷水嘴和电机 车都没法开
- MySQL常用的字符型数据
- MySQL与 PostgreSQL 数据库功能对比
- 逃避僵尸网络恶意软件攻击的14种方法
- 从操作系统层面理解Linux下的网络IO模型,这么讲你还不懂?
- 电脑提示“你的win10许可即将过期”
- 网络IP 、子网掩码 、路由器 、DNS知识你知道些什么
- 允许远程连接MySQL数据库教程
- |职场黄金五年,决定你的一生(五)