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))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM