91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現RSA加密解密

發布時間:2022-04-15 10:21:31 來源:億速云 閱讀:354 作者:iii 欄目:開發技術

這篇文章主要介紹了Python怎么實現RSA加密解密的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python怎么實現RSA加密解密文章都會有所收獲,下面我們一起來看看吧。

一、安裝模塊

pip install pycryptodome

二、生成密鑰對

  • 密鑰對文件生成和讀取

  • 代碼:

from Crypto.PublicKey import RSA

def create_rsa_pair(is_save=False):
    '''
    創建rsa公鑰私鑰對
    :param is_save: default:False
    :return: public_key, private_key
    '''
    f = RSA.generate(2048)
    private_key = f.exportKey("PEM")  # 生成私鑰
    public_key = f.publickey().exportKey()  # 生成公鑰
    if is_save:
        with open("crypto_private_key.pem", "wb") as f:
            f.write(private_key)
        with open("crypto_public_key.pem", "wb") as f:
            f.write(public_key)
    return public_key, private_key


def read_public_key(file_path="crypto_public_key.pem") -> bytes:
    with open(file_path, "rb") as x:
        b = x.read()
        return b


def read_private_key(file_path="crypto_private_key.pem") -> bytes:
    with open(file_path, "rb") as x:
        b = x.read()
        return b

三、加密

  • 流程:輸入文本(str)→字符串編碼(默認utf-8)(bytes)→rsa加密(bytes)→base64編碼(bytes)→解碼為字符串(str)

代碼:

import base64
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA

def encryption(text: str, public_key: bytes):
	# 字符串指定編碼(轉為bytes)
	text = text.encode('utf-8')
	# 構建公鑰對象
	cipher_public = PKCS1_v1_5.new(RSA.importKey(public_key))
	# 加密(bytes)
	text_encrypted = cipher_public.encrypt(text) 
	# base64編碼,并轉為字符串
	text_encrypted_base64 = base64.b64encode(text_encrypted ).decode()
	return text_encrypted_base64 
	
if __name__ == '__main__':
	public_key = read_public_key()
	text = '123456'
	text_encrypted_base64 = encryption(text, public_key)
	print('密文:',text_encrypted_base64)

四、解密

  • 說明:解密流程與加密流程相反(按照加密流程逆序解密)

  • 流程:輸入文本(str)→字符串編碼(默認utf-8)(bytes)→base64解碼(bytes)→rsa解密(bytes)→解碼為字符串(str)

  • 代碼:

import base64
from Crypto.Cipher import PKCS1_v1_5
from Crypto import Random
from Crypto.PublicKey import RSA

def decryption(text_encrypted_base64: str, private_key: bytes):
	# 字符串指定編碼(轉為bytes)
	text_encrypted_base64 = text_encrypted_base64.encode('utf-8')
	# base64解碼
	text_encrypted = base64.b64decode(text_encrypted_base64 )
	# 構建私鑰對象
	cipher_private = PKCS1_v1_5.new(RSA.importKey(private_key))
	# 解密(bytes)
	text_decrypted = cipher_private.decrypt(text_encrypted , Random.new().read)
	# 解碼為字符串
	text_decrypted = text_decrypted.decode()
	return text_decrypted 
	
if __name__ == '__main__':
	# 生成密文
	public_key = read_public_key()
	text = '123456'
	text_encrypted_base64 = encryption(text, public_key)
	print('密文:',text_encrypted_base64)
	
	# 解密
	private_key = read_private_key()
	text_decrypted = decryption(text_encrypted_base64, private_key)
	print('明文:',text_decrypted)

五、完整代碼

import base64
from Crypto.Cipher import PKCS1_v1_5
from Crypto import Random
from Crypto.PublicKey import RSA


# ------------------------生成密鑰對------------------------
def create_rsa_pair(is_save=False):
    '''
    創建rsa公鑰私鑰對
    :param is_save: default:False
    :return: public_key, private_key
    '''
    f = RSA.generate(2048)
    private_key = f.exportKey("PEM")  # 生成私鑰
    public_key = f.publickey().exportKey()  # 生成公鑰
    if is_save:
        with open("crypto_private_key.pem", "wb") as f:
            f.write(private_key)
        with open("crypto_public_key.pem", "wb") as f:
            f.write(public_key)
    return public_key, private_key


def read_public_key(file_path="crypto_public_key.pem") -> bytes:
    with open(file_path, "rb") as x:
        b = x.read()
        return b


def read_private_key(file_path="crypto_private_key.pem") -> bytes:
    with open(file_path, "rb") as x:
        b = x.read()
        return b


# ------------------------加密------------------------
def encryption(text: str, public_key: bytes):
    # 字符串指定編碼(轉為bytes)
    text = text.encode('utf-8')
    # 構建公鑰對象
    cipher_public = PKCS1_v1_5.new(RSA.importKey(public_key))
    # 加密(bytes)
    text_encrypted = cipher_public.encrypt(text)
    # base64編碼,并轉為字符串
    text_encrypted_base64 = base64.b64encode(text_encrypted).decode()
    return text_encrypted_base64


# ------------------------解密------------------------
def decryption(text_encrypted_base64: str, private_key: bytes):
    # 字符串指定編碼(轉為bytes)
    text_encrypted_base64 = text_encrypted_base64.encode('utf-8')
    # base64解碼
    text_encrypted = base64.b64decode(text_encrypted_base64)
    # 構建私鑰對象
    cipher_private = PKCS1_v1_5.new(RSA.importKey(private_key))
    # 解密(bytes)
    text_decrypted = cipher_private.decrypt(text_encrypted, Random.new().read)
    # 解碼為字符串
    text_decrypted = text_decrypted.decode()
    return text_decrypted


if __name__ == '__main__':
    # 生成密鑰對
    # create_rsa_pair(is_save=True)
    # public_key = read_public_key()
    # private_key = read_private_key()
    public_key, private_key = create_rsa_pair(is_save=False)

    # 加密
    text = '123456'
    text_encrypted_base64 = encryption(text, public_key)
    print('密文:', text_encrypted_base64)

    # 解密
    text_decrypted = decryption(text_encrypted_base64, private_key)
    print('明文:', text_decrypted)

運行:

Python怎么實現RSA加密解密

關于“Python怎么實現RSA加密解密”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python怎么實現RSA加密解密”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁陕县| 沾化县| 漾濞| 嘉荫县| 元朗区| 嵊州市| 长岛县| 凤城市| 巴林右旗| 白山市| 揭东县| 北安市| 凤山市| 简阳市| 高阳县| 彩票| 孟州市| 林西县| 获嘉县| 静宁县| 平泉县| 莲花县| 铁岭市| 弋阳县| 赤壁市| 化州市| 大埔县| 重庆市| 迭部县| 百色市| 精河县| 贵定县| 岳阳县| 绍兴市| 嘉峪关市| 六枝特区| 长沙县| 肇州县| 东光县| 钦州市| 阿克陶县|