python加密方法:rsa加密和解密

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)

生成文件如下图:

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

加密

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')) // 使用之前必须先解码

扩展

在使用中, 通常会先对数据进行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))

posted @ 2022-02-18 11:56  yingzi__block  阅读(3329)  评论(0编辑  收藏  举报