接口测试--加密算法
1.加密算法的分类
a.哈希算法:md5,不可逆(即不可解密)
例如:
加盐:abc明文efg --------md5加密-------->sdfsdfsfsfadfdsffasdf
b.对称加密算法:aes,加密解密速度快
例如:
加密 123456(明文)-----------(密钥00000)------------sdfadlfsfsdfdfsdfdsf(密文)
解密 sdfadlfsfsdfdfsdfdsf(密文) -----------(密钥00000)------------123456(明文)
总结:加密与解密时密钥是同一个
c.非对称加密算法:rsa,加密速度比较慢
例如:
加密 123456(明文)-----------(公钥11111)------------sdfadlfsfsdfdfsdfdsf(密文)
解密 sdfadlfsfsdfdfsdfdsf(密文) -----------(私钥88888)------------123456(明文)
总结:加密与解密时密钥不一样
base64编码,url编码算什么?
2.加密算法使用场景
用户登录:md5/非对称 rsa
数据传输的一致性:md5
数据库表存储:md5(双重)/自定义
3.代码示例
md5加密
import hashlib passwd='123456' md5_obj=hashlib.md5() md5_obj.update(passwd.encode(encoding="utf-8")) print(md5_obj.hexdigest()) #运行结果 C:\Users\ipharmacare\python37\python.exe C:/Users/cl/pythonstudy/python3/加密/demo_md5.py e10adc3949ba59abbe56e057f20f883e 进程完成,退出码 0
rsa加密
安装命令:pip install rsa
import rsa #加密字符串 passwd='123456' #示例化加密对象 (pubkey,privkey)=rsa.newkeys(1024) #用公钥加密 pwd=rsa.encrypt(passwd.encode(),pubkey) #加密后的结果 print(pwd.hex()) #用私钥解密 depwd=rsa.decrypt(pwd,privkey) print(depwd.decode('utf-8')) # 运行结果 C:\Users\ipharmacare\python37\python.exe C:/Users/cl/pythonstudy/python3/加密/demo_md5.py 9d13989a1803dbb703e8444ce40685cae10ad48289c8a652eeeda7fa0c8b2db039eab89502d77f658a0fcba0cedd503688f0fbc6829f1de1e62e57f149f4c2389965f90eff026cfa2585cf7f3f237e78b4c2d56a7b64af9b66817a51464a7bd67fe487ca9e0854a61dc46229155018624cdf36dcdac5d21b28d68d39e3629d89 123456 进程完成,退出码 0
对同一个字符串进行两次加密,每次生成的密钥都不一样,但是解密后输出的内容是一样的
import rsa #加密字符串 passwd='123456' #示例化加密对象 (pubkey,privkey)=rsa.newkeys(1024) #用公钥加密 pwd=rsa.encrypt(passwd.encode(),pubkey) #加密后的结果 print(pwd.hex()) #用公钥加密 pwd2=rsa.encrypt(passwd.encode(),pubkey) #加密后的结果 print(pwd2.hex()) #用私钥解密 depwd=rsa.decrypt(pwd,privkey) print(depwd.decode('utf-8')) depwd=rsa.decrypt(pwd2,privkey) print(depwd.decode('utf-8')) #运行结果 0f592f4c2836871910bb591ec5cc8d41ee5e62ccab3b824e7c1b3596f6c7983928210ab5fe68c77fa681e69f7c9d1063667572d557470aaa347233a82d17cdf2318dab3a23ac2a44be51e1e042c36198d2b2391e623265367cd5092fa2a76d6a9702ff61b5ddf89c40ab8996af7132f9b48e9d07698321780ec6b1c5e3f6c7e7 13f2843f6ed2b3fd793737fc6eaa5bf26624685b7e83beda6434d8cea82afd7702f46f99362881087a719c4df7e8a889ed39bda75b6b9b8220b2c1a091b497bf6c9069e1d0789892a7d4e31a2c9d45beb27ef01d2dbcff75ed7f8d7a93315833f580f3641cde86ff8d5153fe95c4ec387e72bdb5248801c5dc69dc9cc4a55e44 123456 123456
base64加密解密
import base64 pwd='change' #加密 pwd_b=pwd.encode('utf-8') #将字符串类型转换为字节类型 print(pwd_b) rlt=base64.b64encode(pwd_b) #传参必须是字节类型 print(rlt) #解密 rlt_decode=base64.b64decode(rlt).decode('utf-8') print(rlt_decode) #运行结果: C:\Users\ipharmacare\python37\python.exe C:/Users/cl/pythonstudy/python3/加密/demo_md5.py b'changle' b'Y2hhbmdsZQ==' changle 进程完成,退出码 0