常见加密算法之单向加密

2020-04-02 16:48:32 浏览数 (1)

常见加密算法总结-单向加密

在接口测试过程中,常常会遇到加密算法,今天主要说说一下单向散列加密的4种算法。

MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠, 除此之外BASE64编码算法不算是真正的加密算法。首先让我们了解下什么是单向散列算法。

单向散列算法

单向散列加密算法常用于提取数据,验证数据的完整性。发送者将明文通过单向加密算法加密生成固定长度的密文串,然后将明文和密文串传递给接收方。接收方在收到报文后,将解明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。其次也用于密码加密传递存储。单向加密算法只能用于对数据的加密,无法被解密,其特点为固定长度输出、雪崩效应。接下来是对4种算法的简单总结:

MD5

MD5严格意义上来说,不是编码也不是加密,而是摘要算法,也叫做哈希算法和散列算法,它的典型应用是:防止篡改和校验数据。

无论是多长的输入,MD5都会输出长度为128bits的一个串 (通常用16进制表示为32个字符)。需要注意的是:摘要算法是不可以逆的。通过加密后的数据是不能得到原始数据的。下面是相应的python实现代码:

SHA1

SHA1和MD5一样,也是摘要算法,但是SHA1的安全性更强,同时还有SHA256,SHA512等,区别就是长度不一样,越长越安全但是速度越来越慢。对于长度小于2 ^ 64 位的消息,SHA1会产生一个160位的消息摘要。基于MD5、SHA1的信息摘要特性以及不可逆(一般而言),可以被应用在检查文件完整性以及数字签名等场景。下面是python实现代码:

HMAC

HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法(MD5、SHA1等),以一个密钥和一个消息为输入,生成一个消息摘要作为输出。下面是以MD5算法的python实现代码:

BASE64

严格地说,BASE64属于编码格式,而非加密算法Base64。加密算法是网络上最常见的用于传输8bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。python实现代码如下:

这次就先总结这么多,下次是对复杂的对称加密(DES、PBE)、非对称加密算法的总结。下次见~

0 人点赞