4.加密函数编写

作者: 小小一颗卤蛋 | 来源:发表于2022-11-01 21:50 被阅读0次

    加密算法分类:

    • md5系列加密 ,哈希算法类型
    • aes加密对称加密,加密/解密是一个密钥
    • rsa加密 非对称加密,加密/解密使用一对公私钥,安全系数相对高些
    • sm4加密 国密

    md5加密算法:

    • 概述:md5没有解密函数,解密原理是在库里面检索的
    • 分类:
      1.简单的md5加密,一般不在密码加密使用,在辅助加密信息,如:签名
      2.MD5加盐(salt) pwd==12345, 123456+盐值,不好破译
      3.md5加双层盐:客户端加一次,服务端加一次,即双层盐
    import hashlib
    def get_md5_data(data:str,salt=''):
    """
    param data: 被加密的数据
    param salt:盐值 ,默认为空
    return:返回加密得到的16进制数据的密文
    """
      #1.创建md5实例
      md5=hashlib.md5()
      data=f'{data}{salt}'   # data= data+salt---要类型一致
      #2.调用加密函数
      md5.update(data.encode('utf-8'))# 转为统一编码
      #3.返回加密的密文
      return md5.hexdigest() # 加密后的结果---16进制值
      
    

    RSA加密

    RSA加密流程.png
    • 概述: 非对称加密:一对密钥
    • 公钥:客户端拿到这个公钥,使用对应的函数把明文数据,加密,公钥可以公开
    • 私钥;客户端请求发过来密文,需要校验,使用私钥去解密,做判断数据是否,匹配
    • 怎么获取公钥?
      1.直接找开发要
      2.有些项目可以测试人员自己获取
      浏览器打开项目---F12---控制台---输入publickey
    • 扩展: 公钥加密,私钥解密;私钥签名,公钥验签
    • 加密:保证数据在网络传送中,就算被人抓包,不能直接看到具体的数据
    • 签名:签名,保证用户的身份

    RSA加密的代码流程:

    1、 安装对应的库: cmd --pip install pycryptodome
    2、加密处理流程:

    • 先获取/加密公钥文件
    • 输入需要加密的明文数据--加密函数一定需要一个形参(data)
    • 把输入的字符串---byte str:'abc'---b'abc'
    • 使用加密方法加密
    • 使用base64编码(对加密的密文进行编码)
    • 解码--密文是byte字节码--dencode()---字符串

    加密过程如下:

    import pycryptodome
    class RsaEncodecrypt:
      def __init__(self,file_path='./'):
        self.file_path = file_path
      def encrypt01(self,crypt_data):
        #1,先获取/加密公钥文件--公钥数据
        with open(f'{self.file_path}public.pem','rb')as fo: # rb 以字节形式读取
          # 2 .获取公钥的内容
          key_content_byte = fo.read()
          # 3,把输入的明文密码转为bytes类型
          crypt_data= crypt_data.encode('utf-8')
          #4,需要把公钥的内容给对应的函数--RAS公钥对象
          public_key =RSA.importKey(key_content_bytes)
          #5,使用公钥对象,生成一个加密对象 cipher
          cipher =  PKCS1_cipher.new(public_key)
          # 6.调用加密方法encrypt(必须是bytes数据)
          encrypt_text = cipher.encrypt(crypt_data)
          #7.使用base64编码--解码--字符串
           return base64.b64encode(encrypt_text).decode('utf-8')
    
      """
    项目--RSA加密接口
    url = 'http://121.41.14.39:8082/account/loginRsa'
    参数:
        username  账号
        password: RSA加密的结果
            1- yuanyuabn通过md5加密成密文--a
            2- 使用RSA的公钥加密(a)
        sign 签名
            md5(username+password密文)
    加密库安装:
        # pip install  pycryptodome -i https://douban.com/simplie
    加密流程:
        1- 首先需要一个公钥
    """
    from Crypto.PublicKey import RSA
    from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher #重命名
    import base64
    class RSAendecrypt:
        def __init__(self,file_path='./'):
            self.file_path = file_path
        #1-创建密钥对:公钥  私钥
        #2-加密操作
        def encrypt02(self,crypt_data):
            #1-打开读取这个公钥文件
            with open(self.file_path+'public.pem') as fo:
                key = fo.read()#2-读取内容----字符串类型
                public_key = RSA.importKey(key)#RSA里面importkey---变成公钥
                cipher = PKCS1_cipher.new(public_key)#生成对象
                rsa_text = base64.b64encode(cipher.encrypt(bytes(crypt_data.encode('utf-8'))))#加密操作
                #需要解码
                return rsa_text.decode('utf-8')
     
    

    相关文章

      网友评论

        本文标题:4.加密函数编写

        本文链接:https://www.haomeiwen.com/subject/zglzzrtx.html