📅  最后修改于: 2023-12-03 15:21:45.363000             🧑  作者: Mango
计算机中有很多种加密方式可以用来保护数据的安全性,而且大部分的加密方式不需要像传统的密钥加密一样需要通过共享的密钥来保证密文的安全,下面是一些可以在计算机中使用的加密方式:
散列函数是一种将任意长度的消息压缩成固定长度的输出的数学函数。它们被广泛用于计算机安全中的信息摘要、数字签名、密码哈希等方面。常见的散列函数有MD5、SHA1、SHA256等等。
import hashlib
# 使用md5散列函数计算散列值
message = b"hello world"
hash_object = hashlib.md5(message)
hex_dig = hash_object.hexdigest()
print(hex_dig)
# 使用sha1散列函数计算散列值
message = b"hello world"
hash_object = hashlib.sha1(message)
hex_dig = hash_object.hexdigest()
print(hex_dig)
# 使用sha256散列函数计算散列值
message = b"hello world"
hash_object = hashlib.sha256(message)
hex_dig = hash_object.hexdigest()
print(hex_dig)
非对称加密算法采用了一对密钥,即公钥和私钥,公钥公开,私钥保留,加密过程使用公钥进行,解密过程使用私钥进行,常见的非对称加密算法有RSA、ECC、DSA等等。
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
# 使用公钥进行加密
message = b"hello world"
ciphertext = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(ciphertext)
# 使用私钥解密
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(plaintext)
对称加密算法采用同一个密钥进行加密和解密,常见的对称加密算法有AES、DES、3DES等等。
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
# 生成随机密钥
key = default_backend().random_bytes(32)
# 使用AES对称加密算法加密
message = b"hello world"
iv = default_backend().random_bytes(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(message) + encryptor.finalize()
print(ciphertext)
# 使用AES对称加密算法解密
decryptor = cipher.decryptor()
plaintext = decryptor.update(ciphertext) + decryptor.finalize()
print(plaintext)
总的来说,计算机中有很多种可以使用的加密方式,程序员可以根据自己的需求选择适合自己的加密方式。