自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Python進行對稱和非對稱密鑰加密和解密

安全 應用安全
加密涉及將明文數據轉換為密文,使未經授權的個人或實體無法理解。這一過程是通過使用加密算法和加密密鑰來實現的。其目的是確保即使加密數據被未授權方截獲或訪問,他們也無法在沒有解密密鑰的情況下理解其內容。

加密和解密是一種加密過程,通過使用加密密鑰將敏感信息轉換為不可讀格式(密文),然后使用解密密鑰逆轉過程將其恢復為原始可讀格式(明文),從而確保敏感信息的安全和保護。

加密:

加密涉及將明文數據轉換為密文,使未經授權的個人或實體無法理解。這一過程是通過使用加密算法和加密密鑰來實現的。其目的是確保即使加密數據被未授權方截獲或訪問,他們也無法在沒有解密密鑰的情況下理解其內容。

解密:

解密是加密的逆過程。它涉及將密文轉換回原始的明文形式。為了解密密文,需要使用相應的解密算法和解密密鑰。獲得解密密鑰訪問權限的授權后方可以逆轉加密過程,并恢復原始數據。

這些過程在確保各種情況下的數據安全和保密性方面發(fā)揮著至關重要的作用,例如:

  • 數據傳輸:在將數據通過網絡(如互聯網)發(fā)送之前對其進行加密,有助于防止竊聽和數據攔截。
  • 數據存儲:加密存儲可確保數據在物理存儲設備丟失、被盜或損壞的情況下免遭未經授權的訪問。
  • 身份驗證:加密通常用于身份驗證機制,以確保憑證、令牌和其他敏感信息的安全。
  • 數字簽名:加密用于創(chuàng)建數字簽名,以驗證數字文件或信息的真實性和完整性。
  • 安全通信:加密通信渠道(如HTTPS)可確保用戶瀏覽器和網絡服務器之間交換的數據安全。

現代加密技術包括對稱密鑰加密(使用相同的密鑰進行加密和解密)和非對稱密鑰加密(使用一對密鑰:公開密鑰和私人密鑰)。

對稱密鑰加密:

對稱密鑰加密是一種加密技術,數據的加密和解密都使用相同的密鑰。換句話說,發(fā)送方和接收方共享同一密鑰。這一過程包括使用加密密鑰將明文數據轉換為密文,然后使用相同的密鑰進行解密,逆轉過程以獲得原始明文。

對稱密鑰解密:

對稱密鑰解密是使用加密時所使用的相同密鑰將加密數據(即密文)轉換回原始明文形式的過程。在對稱加密技術中,加密和解密都使用相同的密鑰。

非對稱密鑰加密:

非對稱密鑰加密又稱公鑰加密,是一種使用一對密鑰(公鑰和私鑰)來確保通信安全和保護數據的加密技術。對稱加密在加密和解密時使用相同的密鑰,而非對稱加密則不同,在這兩個過程中使用不同的密鑰。

非對稱密鑰解密:

非對稱密鑰解密是非對稱加密的一部分,在其中使用一對密鑰:用于加密的公鑰和用于解密的私鑰。公鑰可以公開共享,而私鑰必須保密。在此過程中,使用相應公鑰加密的數據只能使用私鑰解密。

實現對稱密鑰加密的Python代碼:

圖片圖片

對稱密鑰加密代碼解析:

import boto3和import os:導入必要的庫,Boto3用于與AWS交互,os用于操作系統相關的操作。

region_name = '<aws-region-name>'和kms_key_id = '<kms-key>':設置用于加密的AWS區(qū)域名稱和KMS密鑰ID。將<aws-region-name>和<kms-key>替換為實際值。

input_file_name = '<path-to-input-csv-file>'和output_file_name = '<path-to-store-the-output-encrypted-file>':指定要加密的輸入文件的路徑和存儲加密輸出的路徑。

kms_client = boto3.client('kms', region_name=region_name):為指定的AWS區(qū)域初始化KMS客戶端對象。

with open(input_file_name, 'rb') as input_file:以二進制模式('rb')打開輸入文件進行讀取。

input_data = input_file.read():將輸入文件(明文數據)的內容讀取到input_data變量中。

response = kms_client.encrypt(...):使用指定的KMS密鑰(kms_key_id)加密input_data。從響應中獲取加密數據。

encrypted_data = response['CiphertextBlob']:從響應中提取加密數據(密文)。

with open(output_file_name, 'wb') as output_file:以二進制模式('wb')打開一個新文件進行寫入。

output_file.write(encrypted_data):將加密數據(來自encrypted_data變量)寫入輸出文件。

實現對稱密鑰解密的Python代碼:

圖片圖片

對稱密鑰解密代碼解析:

import boto3:導入Boto3庫,這是Python的AWS SDK。

region_name = '<aws-region-name>'和kms_key_id = '<kms-key>':設置用于解密的AWS區(qū)域名稱和KMS密鑰ID。將<aws-region-name>和<kms-key>替換為實際值。

input_file_name = '<path-of-the-encrypted-file>'和output_file_name = '<path-to-store-the-decrypted-file>':指定加密的輸入文件和解密的輸出文件的路徑。

kms_client = boto3.client('kms', region_name=region_name):為指定的AWS區(qū)域初始化KMS客戶端對象。

with open(input_file_name, 'rb') as input_file:以二進制模式('rb')打開加密的輸入文件進行讀取。

encrypted_data = input_file.read():將加密輸入文件(密文)的內容讀取到encrypted_data變量中。

response = kms_client.decrypt(...):使用指定的KMS密鑰(kms_key_id)解密encrypted_data。從響應中獲取解密數據。

decrypted_data = response['Plaintext']:從響應中提取解密數據(明文)。

with open(output_file_name, 'wb') as output_file:以二進制模式('wb')打開一個新文件進行寫入。

output_file.write(decrypted_data):將解密數據(來自decrypted_data變量)寫入輸出文件。

decrypted_data = response['Plaintext']:再次將解密數據賦值給decrypted_data變量。

print(decrypted_data.decode('utf-8')):將解密數據解碼為UTF-8格式并打印到控制臺上。

實現非對稱密鑰加密的Python代碼:

圖片圖片

非對稱密鑰加密代碼解析:

import boto3:導入Boto3庫,這是用于Python的AWS SDK。

kms = boto3.client('kms', region_name='<aws-region>'):為指定的AWS區(qū)域設置一個KMS客戶端對象。將<aws-region>替換為所需的AWS區(qū)域。

key_id = '<public-key-from-aws-kms>':指定將用于加密的公鑰的ID。你需要用AWS KMS中的實際密鑰ID替換此處。

response = kms.get_public_key(KeyId=key_id):檢索與指定密鑰ID相關聯的公鑰。

public_key = response['PublicKey']:從響應中提取公鑰內容。

with open('<path-of-file-to-encrypt>', 'rb') as f:以二進制模式('rb')打開要加密的文件以供讀取。將<path-of-file-to-encrypt>替換為實際的文件路徑。

data = f.read():將要加密的文件內容讀取到數據變量中。

encrypted_data = kms.encrypt(...):使用公鑰(public_key)和指定的加密算法(RSAES_OAEP_SHA_1)對數據進行加密。加密后的數據存儲在encrypted_data變量中。

with open('<path-to-store-encrypted-file>', 'wb') as f:以二進制模式('wb')打開一個新文件以供寫入加密數據。將<path-to-store-encrypted-file>替換為存儲加密文件的目標路徑。

f.write(encrypted_data['CiphertextBlob']):將加密的密文(來自encrypted_data變量)寫入新文件。

實現非對稱密鑰解密的Python代碼:

圖片圖片

非對稱密鑰解密代碼解析:

import boto3:導入Boto3庫,這是用于Python的AWS SDK。

kms = boto3.client('kms', region_name='<aws-region>'):為指定的AWS區(qū)域設置一個KMS客戶端對象。將<aws-region>替換為所需的AWS區(qū)域。

key_id = '<private-key-from-aws-kms>':指定將用于解密的私鑰的ID。你需要用AWS KMS中的實際密鑰ID替換此處。

with open('<path-of-encrypted-file>', 'rb') as f:以二進制模式('rb')打開加密文件以供讀取。將<path-of-encrypted-file>替換為實際的文件路徑。

encrypted_data = f.read():將加密文件的內容讀取到encrypted_data變量中。

decrypted_data = kms.decrypt(...):使用由key_id指定的私鑰對encrypted_data進行解密。解密后的數據存儲在decrypted_data變量中。

with open('<path-to-store-decrypted-file>', 'wb') as f:以二進制模式('wb')打開一個新文件以供寫入解密數據。將<path-to-store-decrypted-file>替換為存儲解密文件的目標路徑。

f.write(decrypted_data['Plaintext']):將解密的明文(來自decrypted_data變量)寫入新文件。

責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2019-09-23 12:16:02

通信安全加密哈希

2023-11-22 16:08:48

2020-05-27 10:10:56

對稱加密Hash算法數字簽名

2024-02-29 09:08:56

Encoding算法加密

2014-07-07 10:04:32

2019-09-11 08:37:16

2024-12-31 08:00:00

SpringBoot開發(fā)加密

2010-07-28 10:09:01

2021-01-18 07:09:42

Https認證加密

2011-03-14 15:06:49

SQL Server 安全

2019-12-11 16:56:37

HTTPS對稱加密Java

2023-07-13 07:35:19

2022-10-21 07:33:12

2020-07-17 17:11:22

HTTPS對稱非對稱

2011-03-15 09:51:09

2012-09-13 09:58:38

2011-03-14 10:38:10

SQL Server非對稱密鑰加密

2024-12-31 08:54:38

2024-11-26 10:01:25

2022-09-21 10:12:59

WireGuard路由Linux
點贊
收藏

51CTO技術棧公眾號