在如今互聯網時代,信息安全越發受到重視。本文主要介紹使用Python實現加密相關技術,保證信息傳輸的安全性。
一、加密算法概述
加密算法是指將一段明文轉化為一段無法理解的密文,使其只有掌握相應秘鑰的人才能解密的一種技術。目前比較流行的加密算法有MD5、SHA-1、DES、AES等。
二、MD5和SHA-1算法
MD5算法和SHA-1算法是目前比較流行的兩種Hash算法。
MD5算法的原理是將任意長度的輸入(明文)通過四輪的循環運算,最終輸出一個長度為128位的哈希值,通常用32位十六進制數表示。MD5算法的弊端是容易被碰撞攻擊破解。
import hashlib
def md5_encrypt(string):
md5 = hashlib.md5()
md5.update(string.encode(encoding='utf-8'))
return md5.hexdigest()
SHA-1算法的原理和MD5類似,其通過循環運算輸出一個160位哈希值,通常用40位十六進制數表示。不同的是,SHA-1算法更為安全,更難被碰撞攻擊破解,但因其計算複雜度較高而被逐漸淘汰。
import hashlib
def sha1_encrypt(string):
sha1 = hashlib.sha1()
sha1.update(string.encode(encoding='utf-8'))
return sha1.hexdigest()
三、對稱加密算法
對稱加密算法即使用相同的秘鑰進行加密和解密的算法。目前比較流行的對稱加密算法有DES、3DES、AES等。
AES算法是目前比較安全的對稱加密算法,其加密過程需要一個秘鑰和明文,輸出密文。解密過程需要秘鑰和密文,輸出明文。AES算法有三種密鑰長度:128位、192位和256位。
from Crypto.Cipher import AES
import base64
def aes_encrypt(key, iv, string):
cipher = AES.new(key.encode(encoding='utf-8'), AES.MODE_CBC, iv.encode(encoding='utf-8'))
padding_length = 16 - len(string.encode(encoding='utf-8')) % 16
padding_string = chr(padding_length) * padding_length
string = string + padding_string
encrypted_string = cipher.encrypt(string.encode(encoding='utf-8'))
return base64.b64encode(encrypted_string).decode('utf-8')
def aes_decrypt(key, iv, encrypted_string):
cipher = AES.new(key.encode(encoding='utf-8'), AES.MODE_CBC, iv.encode(encoding='utf-8'))
decrypted_string = cipher.decrypt(base64.b64decode(encrypted_string)).decode()
return decrypted_string.rstrip(chr(ord(decrypted_string[-1])))
aes_encrypt函數實現AES算法的加密過程,傳入key(秘鑰)、iv(初始向量)和明文;aes_decrypt函數實現AES算法的解密過程,傳入key(秘鑰)、iv(初始向量)和密文。其中,需要使用Crypto模塊的Cipher類和base64模塊。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/251762.html