zoukankan      html  css  js  c++  java
  • 接口测试--加密算法

    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:Usersipharmacarepython37python.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:Usersipharmacarepython37python.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:Usersipharmacarepython37python.exe C:/Users/cl/pythonstudy/python3/加密/demo_md5.py
    b'changle'
    b'Y2hhbmdsZQ=='
    changle
    
    进程完成,退出码 0
    

      

      

      

      

                  

  • 相关阅读:
    使用C#替换Word文档里的文字和图片
    《程序员的思维修炼—开发认知潜能的九堂课》—从新手到专家的历程
    从已有数据库表生成Insert语句的小工具
    我的2010
    Sqlite批量插入速度慢的解决方法小计
    分享一个winForm下的Chart控件
    分享一个任务提醒小工具
    SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图
    Winform中选取指定文件夹并获取其下所有文件
    Vue中JS遍历后台JAVA返回的Map数据,构造对象数组数据格式
  • 原文地址:https://www.cnblogs.com/pipile/p/13530424.html
Copyright © 2011-2022 走看看