加密算法



需求催生技术!


概述


什么是加密算法


加密算法说白了就是一种对数据上锁的 function!


数据加密的基本过程:

  • 对原来为明文的文件或数据按某种算法进行处理
  • 加密后的数据不可读, 是 “密文”
  • 只能在输入相应的密钥之后才能显示出原内容


目标


通过加密算法的途径来达到, 保护数据不被非法窃取、阅读的目的


加密算法的种类


可逆加密算法


特点: 加密后能反向解密出原内容的算法


对称加密


加密和解密使用相同的密钥


解释: 在对称加密中, 数据发信方将明文和加密密钥一起经过特殊的加密算法处理后, 使其变成复杂的加密密文发送出去, 收信方收到密文后, 若想解读出原文, 则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密, 才能使其恢复成可读明文. 在对称加密算法中, 使用的密钥只有一个, 收发双方都使用这个密钥, 这就需要解密方事先知道加密密钥.


优点: 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高


缺点: 没有非对称加密安全


用途: 一般用于保存用户手机号、身份证等敏感但能解密的信息


常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256


非对称加密


两个密钥: 公有密钥 (publickey) 和私有密钥, 公有密钥加密, 私有密钥解密


解释: 同时生成两把密钥: 私钥和公钥, 私钥隐秘保存, 公钥可以下发给信任客户端


加密与解密:

  • 私钥加密: 持有私钥或公钥才可以解密
  • 公钥加密: 持有私钥才可以解密


签名: 

私钥签名, 持有公钥进行验证是否被篡改过


优点: 非对称加密与对称加密相比, 其安全性更好


缺点: 非对称加密的缺点是加密和解密花费时间长、速度慢, 只适合对少量数据进行加密


用途: 一般用于签名和认证. 私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用


常见的非对称加密算法有: RSA、DSA (数字签名用)、ECC (易动设备用)、RS256 (采用 SHA-256 的签名)




不可逆加密算法


特点: 加密后不能解密出原内容的算法


种类: Hash 加密算法、散列算法、摘要算法等


用途: 一般用于校验下载文件正确性, 存储用户敏感信息如密码、卡号等不可解密的信息


常见的不可逆加密算法有: MD5、SHA、HMAC



Base64 编码


Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64编码可用于在HTTP环境下传递较长的标识信息。采用Base64Base64编码解码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。注意:Base64只是一种编码方式,不算加密方法。
在线编码工具:jsons.cn/img2base64/








reference

https://zhuanlan.zhihu.com/p/302454066