软件开发过程中经常需要使用数字签名、信息加密,如用户登入、交易、信息通讯、OAuth 等,不同的应用场景需要使用到不同的签名加密算法,或者需要搭配不一样的签名加密算法来达到业务目标。
数字签名
数字签名,简单来说就是通过提供可鉴别的数字信息验证自身身份的一种方式。
一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。分别由发送者持有能够代表自己身份的私钥 (私钥不可泄露),由接受者持有与私钥对应的公钥 ,能够在接受到来自发送者信息时用于验证其身份。
签名验证.png加解密
加密:就是对原来为明文的文件或数据按某种算法进行处理,使其成为 不可读的一段代码,通常称为 “密文”。通过这样的途径,来达到保护数据 不被非法人窃取、阅读的目的。
解密:加密的逆过程为解密,即将该编码信息转化为其原来数据的过程。
加密算法分对称加密和非对称加密,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。
对称加密
对称加密.png又称为共享密钥加密算法。在对称加密算法中,发送和接收双方都使用相同的密钥对数据进行加密和解密,要求加密和解密方事先都知道加密的密钥。
优缺点:
密钥管理:比较难,不适合互联网,一般用于内部系统
安全性:中
加密速度:快好,几个数量级 (软件加解密速度至少快 100 倍,每秒可以加解密数 M 比特 数据),适合大数据量的加解密处理
非对称加密
非对称加密.png又称为公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥。
如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密。
如果使用私钥对数据进行加密,只有用对应的公钥才能进行解密。
优缺点:
密钥管理:密钥容易管理
安全性:高
加密速度:比较慢,适合 小数据量 加解密或数据签名
常见签名、加密算法
AES/DES/3DES算法
AES、DES、3DES 都是对称的块加密算法,加解密的过程是可逆的。常用的有 AES128、AES192、AES256。
AES 加密算法是密码学中的高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为128 位、192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准。
AES 本身就是为了取代 DES 的,AES具有更好的安全性、效率和灵活性。
RSA算法
RSA加密算法是一种非对称加密算法
RSA 加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案之一。RSA 是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
MD5算法
MD5 用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。
严格来说,MD5 不是一种加密算法而是摘要算法。无论是多长的输入,MD5都会输出长度为128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。
SHA1算法
SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。
对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
网友评论