偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Python進(jìn)行對(duì)稱和非對(duì)稱密鑰加密和解密

安全 應(yīng)用安全
加密涉及將明文數(shù)據(jù)轉(zhuǎn)換為密文,使未經(jīng)授權(quán)的個(gè)人或?qū)嶓w無(wú)法理解。這一過(guò)程是通過(guò)使用加密算法和加密密鑰來(lái)實(shí)現(xiàn)的。其目的是確保即使加密數(shù)據(jù)被未授權(quán)方截獲或訪問(wèn),他們也無(wú)法在沒(méi)有解密密鑰的情況下理解其內(nèi)容。

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

加密:

加密涉及將明文數(shù)據(jù)轉(zhuǎn)換為密文,使未經(jīng)授權(quán)的個(gè)人或?qū)嶓w無(wú)法理解。這一過(guò)程是通過(guò)使用加密算法和加密密鑰來(lái)實(shí)現(xiàn)的。其目的是確保即使加密數(shù)據(jù)被未授權(quán)方截獲或訪問(wèn),他們也無(wú)法在沒(méi)有解密密鑰的情況下理解其內(nèi)容。

解密:

解密是加密的逆過(guò)程。它涉及將密文轉(zhuǎn)換回原始的明文形式。為了解密密文,需要使用相應(yīng)的解密算法和解密密鑰。獲得解密密鑰訪問(wèn)權(quán)限的授權(quán)后方可以逆轉(zhuǎn)加密過(guò)程,并恢復(fù)原始數(shù)據(jù)。

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

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

現(xiàn)代加密技術(shù)包括對(duì)稱密鑰加密(使用相同的密鑰進(jìn)行加密和解密)和非對(duì)稱密鑰加密(使用一對(duì)密鑰:公開密鑰和私人密鑰)。

對(duì)稱密鑰加密:

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

對(duì)稱密鑰解密:

對(duì)稱密鑰解密是使用加密時(shí)所使用的相同密鑰將加密數(shù)據(jù)(即密文)轉(zhuǎn)換回原始明文形式的過(guò)程。在對(duì)稱加密技術(shù)中,加密和解密都使用相同的密鑰。

非對(duì)稱密鑰加密:

非對(duì)稱密鑰加密又稱公鑰加密,是一種使用一對(duì)密鑰(公鑰和私鑰)來(lái)確保通信安全和保護(hù)數(shù)據(jù)的加密技術(shù)。對(duì)稱加密在加密和解密時(shí)使用相同的密鑰,而非對(duì)稱加密則不同,在這兩個(gè)過(guò)程中使用不同的密鑰。

非對(duì)稱密鑰解密:

非對(duì)稱密鑰解密是非對(duì)稱加密的一部分,在其中使用一對(duì)密鑰:用于加密的公鑰和用于解密的私鑰。公鑰可以公開共享,而私鑰必須保密。在此過(guò)程中,使用相應(yīng)公鑰加密的數(shù)據(jù)只能使用私鑰解密。

實(shí)現(xiàn)對(duì)稱密鑰加密的Python代碼:

圖片圖片

對(duì)稱密鑰加密代碼解析:

import boto3和import os:導(dǎo)入必要的庫(kù),Boto3用于與AWS交互,os用于操作系統(tǒng)相關(guān)的操作。

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

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

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

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

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

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

encrypted_data = response['CiphertextBlob']:從響應(yīng)中提取加密數(shù)據(jù)(密文)。

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

output_file.write(encrypted_data):將加密數(shù)據(jù)(來(lái)自encrypted_data變量)寫入輸出文件。

實(shí)現(xiàn)對(duì)稱密鑰解密的Python代碼:

圖片圖片

對(duì)稱密鑰解密代碼解析:

import boto3:導(dǎo)入Boto3庫(kù),這是Python的AWS SDK。

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

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客戶端對(duì)象。

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

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

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

decrypted_data = response['Plaintext']:從響應(yīng)中提取解密數(shù)據(jù)(明文)。

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

output_file.write(decrypted_data):將解密數(shù)據(jù)(來(lái)自decrypted_data變量)寫入輸出文件。

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

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

實(shí)現(xiàn)非對(duì)稱密鑰加密的Python代碼:

圖片圖片

非對(duì)稱密鑰加密代碼解析:

import boto3:導(dǎo)入Boto3庫(kù),這是用于Python的AWS SDK。

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

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

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

public_key = response['PublicKey']:從響應(yīng)中提取公鑰內(nèi)容。

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

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

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

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

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

實(shí)現(xiàn)非對(duì)稱密鑰解密的Python代碼:

圖片圖片

非對(duì)稱密鑰解密代碼解析:

import boto3:導(dǎo)入Boto3庫(kù),這是用于Python的AWS SDK。

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

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

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

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

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

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

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

責(zé)任編輯:武曉燕 來(lái)源: Python學(xué)研大本營(yíng)
相關(guān)推薦

2019-09-23 12:16:02

通信安全加密哈希

2023-11-22 16:08:48

2020-05-27 10:10:56

對(duì)稱加密Hash算法數(shù)字簽名

2024-02-29 09:08:56

Encoding算法加密

2014-07-07 10:04:32

2021-01-18 07:09:42

Https認(rèn)證加密

2019-09-11 08:37:16

2010-07-28 10:09:01

2024-12-31 08:00:00

SpringBoot開發(fā)加密

2023-07-13 07:35:19

2011-03-14 15:06:49

SQL Server 安全

2019-12-11 16:56:37

HTTPS對(duì)稱加密Java

2011-03-15 09:51:09

2022-10-21 07:33:12

2020-07-17 17:11:22

HTTPS對(duì)稱非對(duì)稱

2024-12-31 08:54:38

2024-11-26 10:01:25

2012-09-13 09:58:38

2019-11-21 14:58:34

哈希加密安全

2024-09-09 08:53:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)