最近中文字幕国语免费完整,中文亚洲无线码49vv,中文无码热在线视频,亚洲自偷自拍熟女另类,中文字幕高清av在线

當(dāng)前位置: 首頁(yè) > 技術(shù)教程

Python常見(jiàn)加密算法怎么實(shí)現(xiàn) 常見(jiàn)加密方式的Python實(shí)現(xiàn)

  在Python中,實(shí)現(xiàn)常見(jiàn)的加密算法可以通過(guò)多種方式完成,包括使用內(nèi)置模塊和第三方庫(kù)。以下是一些常見(jiàn)的加密算法及其Python實(shí)現(xiàn)方法:

  1. 對(duì)稱加密

  對(duì)稱加密使用相同的密鑰進(jìn)行加密和解密。常見(jiàn)的對(duì)稱加密算法包括AES、DES和3DES。

  AES加密

  AES(高級(jí)加密標(biāo)準(zhǔn))是一種廣泛使用的對(duì)稱加密算法,支持128位、192位和256位密鑰長(zhǎng)度。在Python中,可以使用PyCryptodome庫(kù)來(lái)實(shí)現(xiàn)AES加密。

  from Crypto.Cipher import AES

  import binascii

  # 密鑰和初始化向量

  key = b'this is a 16 key'

  iv = Random.new().read(AES.block_size)

  # 創(chuàng)建AES對(duì)象

  cipher = AES.new(key, AES.MODE_CFB, iv)

  # 要加密的數(shù)據(jù)

  data = '南來(lái)北往'

  # 加密數(shù)據(jù)

  encrypted_data = cipher.encrypt(data.encode())

  # 解密數(shù)據(jù)

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

  運(yùn)行

  DES加密

  DES(數(shù)據(jù)加密標(biāo)準(zhǔn))是一種較老的對(duì)稱加密算法,密鑰長(zhǎng)度為56位。在Python中,可以使用PyCryptodome庫(kù)來(lái)實(shí)現(xiàn)DES加密。

  from Crypto.Cipher import DES

  import binascii

  # 密鑰

  key = b'abcdefgh'

  # 創(chuàng)建DES對(duì)象

  cipher = DES.new(key, DES.MODE_ECB)

  # 要加密的數(shù)據(jù)

  data = 'python spider!'

  # 加密數(shù)據(jù)

  encrypted_data = cipher.encrypt(data.encode())

  # 解密數(shù)據(jù)

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

云服務(wù)器13.jpg

  3DES加密

  3DES(三重?cái)?shù)據(jù)加密算法)是對(duì)DES的改進(jìn),通過(guò)三次DES加密提高安全性。在Python中,可以使用PyCryptodome庫(kù)來(lái)實(shí)現(xiàn)3DES加密。

  from Crypto.Cipher import DES3

  import binascii

  # 密鑰

  key = b'this is a 16 key'

  # 創(chuàng)建3DES對(duì)象

  cipher = DES3.new(key, DES3.MODE_ECB)

  # 要加密的數(shù)據(jù)

  data = '南來(lái)北往'

  # 加密數(shù)據(jù)

  encrypted_data = cipher.encrypt(data.encode())

  # 解密數(shù)據(jù)

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

  運(yùn)行

  2. 非對(duì)稱加密

  非對(duì)稱加密使用一對(duì)密鑰,公鑰用于加密,私鑰用于解密。常見(jiàn)的非對(duì)稱加密算法包括RSA和ECC。

  RSA加密

  RSA是一種廣泛使用的非對(duì)稱加密算法,基于大素?cái)?shù)乘積的難分解性。在Python中,可以使用rsa庫(kù)來(lái)實(shí)現(xiàn)RSA加密。

  import rsa

  # 生成公鑰和私鑰

  (pubkey, privkey) = rsa.generate_keypair(n_length=1024)

  # 要加密的數(shù)據(jù)

  data = '南北今天很忙'

  # 加密數(shù)據(jù)

  encrypted_data = rsa.encrypt(data.encode(), pubkey)

  # 解密數(shù)據(jù)

  decrypted_data = rsa.decrypt(encrypted_data, privkey)

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

  運(yùn)行

  ECC加密

  ECC(橢圓曲線密碼學(xué))是一種基于橢圓曲線數(shù)學(xué)的非對(duì)稱加密算法,具有更高的安全性和效率。在Python中,可以使用cryptography庫(kù)來(lái)實(shí)現(xiàn)ECC加密。

  from cryptography.hazmat.primitives import hashes

  from cryptography.hazmat.primitives.asymmetric import ec

  from cryptography.hazmat.primitives.asymmetric import padding

  from cryptography.hazmat.primitives import serialization

  # 生成ECC密鑰對(duì)

  private_key = ec.generate_private_key(ec.SECP256R1())

  public_key = private_key.public_key()

  # 要加密的數(shù)據(jù)

  data = '南北今天很忙'

  # 加密數(shù)據(jù)

  encrypted_data = public_key.encrypt(

  data.encode(),

  padding.PKCS1v15()

  )

  # 解密數(shù)據(jù)

  decrypted_data = private_key.decrypt(

  encrypted_data,

  padding.PKCS1v15()

  )

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

  運(yùn)行

  3. 單向哈希函數(shù)

  單向哈希函數(shù)將任意長(zhǎng)度的數(shù)據(jù)映射為固定長(zhǎng)度的哈希值,常用于數(shù)據(jù)完整性檢查和密碼存儲(chǔ)。常見(jiàn)的哈希算法包括MD5、SHA1、SHA256等。

  MD5哈希

  MD5是一種較老的哈希算法,生成128位的哈希值。在Python中,可以使用hashlib庫(kù)來(lái)實(shí)現(xiàn)MD5哈希。

  import hashlib

  # 要哈希的數(shù)據(jù)

  data = '這是一個(gè)測(cè)試'

  # 計(jì)算MD5哈希

  hash_object = hashlib.md5(data.encode())

  hex_dig = hash_object.hexdigest()

  print('MD5哈希值:', hex_dig)

  運(yùn)行

  SHA256哈希

  SHA256是一種更安全的哈希算法,生成256位的哈希值。在Python中,可以使用hashlib庫(kù)來(lái)實(shí)現(xiàn)SHA256哈希。

  import hashlib

  # 要哈希的數(shù)據(jù)

  data = '這是一個(gè)測(cè)試'

  # 計(jì)算SHA256哈希

  hash_object = hashlib.sha256(data.encode())

  hex_dig = hash_object.hexdigest()

  print('SHA256哈希值:', hex_dig)

  運(yùn)行

  4. Base64編碼

  Base64是一種將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為文本的編碼方式,常用于數(shù)據(jù)傳輸和存儲(chǔ)。在Python中,可以使用base64模塊來(lái)實(shí)現(xiàn)Base64編碼和解碼。

  import base64

  # 要編碼的數(shù)據(jù)

  data = 'hello world'

  # 編碼數(shù)據(jù)

  encoded_data = base64.b64encode(data.encode())

  # 解碼數(shù)據(jù)

  decoded_data = base64.b64decode(encoded_data).decode()

  print('Base64編碼后的數(shù)據(jù):', encoded_data)

  print('Base64解碼后的數(shù)據(jù):', decoded_data)

  運(yùn)行

  5. URL編碼

  URL編碼是一種將超出ASCII范圍的字符轉(zhuǎn)換為帶%的十六進(jìn)制格式的編碼方式。在Python中,可以使用urllib.parse模塊來(lái)實(shí)現(xiàn)URL編碼和解碼。

  from urllib.parse import quote, unquote

  # 要編碼的數(shù)據(jù)

  data = '南北今天很忙'

  # 編碼數(shù)據(jù)

  encoded_data = quote(data)

  # 解碼數(shù)據(jù)

  decoded_data = unquote(encoded_data)

  print('URL編碼后的數(shù)據(jù):', encoded_data)

  print('URL解碼后的數(shù)據(jù):', decoded_data)

  運(yùn)行

  6. HMAC加密

  HMAC(Hash-based Message Authentication Code)是一種基于哈希函數(shù)的認(rèn)證碼,用于驗(yàn)證數(shù)據(jù)的完整性和真實(shí)性。在Python中,可以使用hmac庫(kù)來(lái)實(shí)現(xiàn)HMAC加密。

  import hmac

  import hashlib

  # 要加密的數(shù)據(jù)

  data = '這是一個(gè)測(cè)試'

  # 密鑰

  key = b'123456'

  # 計(jì)算HMAC

  hmac_object = hmac.new(key, data.encode(), digestmod='sha256')

  hex_dig = hmac_object.hexdigest()

  print('HMAC值:', hex_dig)

  運(yùn)行

  7. CBC模式

  CBC(Cipher Block Chaining)是一種分組加密模式,通過(guò)將前一個(gè)塊的密文與當(dāng)前塊的明文進(jìn)行異或操作,提高加密的安全性。在Python中,可以使用PyCryptodome庫(kù)來(lái)實(shí)現(xiàn)CBC模式的加密。

  from Crypto.Cipher import AES

  import binascii

  # 密鑰和初始化向量

  key = b'this is a 16 key'

  iv = Random.new().read(AES.block_size)

  # 創(chuàng)建AES對(duì)象

  cipher = AES.new(key, AES.MODE_CBC, iv)

  # 要加密的數(shù)據(jù)

  data = '南來(lái)北往'

  # 加密數(shù)據(jù)

  encrypted_data = cipher.encrypt(data.encode())

  # 解密數(shù)據(jù)

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的數(shù)據(jù):', binascii.b2a_hex(encrypted_data))

  print('解密后的數(shù)據(jù):', decrypted_data.decode())

  運(yùn)行

  8. ECB模式

  ECB(Electronic Codebook)是一種分組加密模式,每個(gè)塊獨(dú)立加密,但安全性較低。在Python中,可以使用PyCryptodome庫(kù)來(lái)實(shí)現(xiàn)ECB模式的加密。

  from Crypto.Cipher import AES

  import binascii

  # 密鑰

  key = b'this is a 16 key'

  # 創(chuàng)建AES對(duì)象

  cipher = AES.new(key, AES.MODE_ECB)

  # 要加密的數(shù)據(jù)

  data = '南來(lái)北往'

  # 加密數(shù)據(jù)

  encrypted_data = cipher.encrypt(data.encode())

  # 解密數(shù)據(jù)

  decrypted_data = cipher.decrypt(encrypted_data)

  print('加密后的數(shù)據(jù):', binascii

 


猜你喜歡