编码算法
MD5
MD5是一个非常常见的摘要(hash)逻辑。特点就是小巧. 速度快. 难被破解,不可逆。(相同的内容计算出来的摘要应该是一样的)
- python实现
1 | from hashlib import md5 |
把密文丢到网页里,发现有些网站可以直接解密。这里并不是直接解密MD5. 而是”撞库”。网站数据库里存储了大量的MD5的值,需要进行查询的时候. 只需要一条select语句就可以查询到了。
如何避免撞库
md5在进行计算的时候可以加盐
1 | from hashlib import md5 |
- 扩展
除了md5,还有sha1, sha256,都属于摘要算法。 都是在计算hash值。只是散列的程度不同而已。 这种算法有一个特性. 他们是散列. 不是加密. 而且, 由于hash算法是不可逆的, 所以不存在解密的逻辑.
1 | from hashlib import sha1, sha256 |
base64编码
base64 编码的优点
- 算法是编码,不是压缩,编码后只会增加字节数,算法可逆,解码很=方便,加密后的字符串只有【0-9a-zA-Z+/=】,便于在网络中传输。
原理
Base64编码,是由64个字符组成编码集:26个大写字母A
Z,26个小写字母az,10个数字0~9,符号“+”与符号“/”。Base64编码的基本思路是将原始数据的三个字节拆分转化为四个字节,然后根据Base64的对应表。当原始数据凑不够三个字节时,编码结果中会使用额外的符号“=”来表示这种情况。
一个Base64字符实际上代表着6个二进制位(bit),4个Base64字符对应3字节字符串/二进制数据。
- 3个字符为一组的的base64编码方式如:
- 小于3个字符为一组的编码方式如:
- 示例
1 | import base64 |
base64长度要求. 字符串长度必须是4的倍数
1 | s = "qwe2a" |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Libraの客栈!