美文网首页
python的加密方式: rsa加密和解密

python的加密方式: rsa加密和解密

作者: 程序_影子 | 来源:发表于2022-02-18 11:54 被阅读0次

    RSA加密是一种非对称加密,通常使用公钥加密,私钥解密。

    公钥、私钥的生成

    def get_key():
          // 生成公钥、私钥
        pubkey, privkey = rsa.newkeys(1024)
          // 公钥、私钥进行转换,以便存储。
          // save_pkcs1  为内置方法,默认值为“PEM”
        pub = pubkey.save_pkcs1()  
        priv = privkey.save_pkcs1('PEM')
        // 创建文件,进行存储
        with open('pubkey.pem', mode='wb') as f:
            f.write(pub)
    
        with open('privkey.pem', mode='wb') as f:
            f.write(priv)
    

    生成文件如下图:


    公钥

    可以将生成的公钥、私钥粘贴复制存储起来,以便使用:

    截屏2022-02-18上午11.41.59.png

    加密

    def rsa_encrypt_password(encrypted_password):
        """
        rsa公钥加密
        """
        return rsa.encrypt(encrypted_password.encode('utf-8'),
                                            rsa.PublicKey.load_pkcs1(settings.RSA_PUB_KEY))
    

    解密

    def rsa_decrypt_password(encrypted_password):
        """
        rsa私钥解密
        """
        return rsa.decrypt(encrypted_password, rsa.PrivateKey.load_pkcs1(settings.RSA_PRIV_KEY))
    

    使用

        aa = rsa_encrypt_password('aaaa')
        print(aa)
        r_aa = rsa_decrypt_password(aa)
        print(r_aa.decode('utf-8')) // 使用之前必须先解码
    
    截屏2022-02-18上午11.50.22.png

    扩展

    在使用中, 通常会先对数据进行bas64加密, 再对加密后的内容使用rsa加密, 最后对rsa解密后的内容进行bas64解密.

    base64 + ras 加密
    def rsa_encrypt_password(encrypted_password):
        """
        rsa加密
        """
        return base64.b64encode(rsa.encrypt(encrypted_password.encode('utf-8'),
                                            rsa.PublicKey.load_pkcs1(settings.RSA_PUB_KEY)))
    
    base64 + ras 解密
    def rsa_decrypt_password(encrypted_password):
        """
        rsa解密
        """
        return rsa.decrypt(base64.decodestring(encrypted_password),
                            rsa.PrivateKey.load_pkcs1(settings.RSA_PRIV_KEY))
    
    

    相关文章

      网友评论

          本文标题:python的加密方式: rsa加密和解密

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