Iam使用查查普1305加密多个文件,密码使用KDF。我可以加密文件,但是如何用随机的现在解密。这个函数写着永远不要重用现在,但是我是如何用随机的非says来解密的。
如果我重新使用现在的文件加密,那么它有多安全。
有人问过类似的问题,但解决方案不是很好
Eg码
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
kdfpass = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=5
)
password = kdfpass.derive(b'Password@123')
salt = b'123456789520'
original = b'Hellow123'
chacha = ChaCha20Poly1305(password)
encrypted = chacha.encrypt(os.urandom(12), original, salt)
print(encrypted)
decrypted = chacha.decrypt(os.urandom(12), encrypted, salt)
print(decrypted)有没有办法保存现在并检索它以便解密。
还想知道chacha-poly1305是否是一个足够好的加密。
发布于 2021-12-22 18:37:30
在这种情况下,您使用不同的非case加密和解密。在这种情况下,nonce的目的是允许在不损害安全性的情况下重用密钥。
使用相同的时间加密和解密消息是安全的,事实上,您必须这样做才能正常工作。但是,对于多个消息,您不能重用相同的键/当前对。这既允许篡改消息,也允许婴儿床拖拽攻击,这可能泄露明文。
ChaCha20-Poly1305被认为是强大和健壮的。然而,由于小的现在大小,你不应该使用随机的不与它因为碰撞的风险。相反,从CSPRNG中为每条消息生成一个随机盐,从KDF派生该消息的键和名,然后将salt放在消息的前面,而不是现在。解密时,移除盐,重新派生密钥,然后使用这些密钥进行解密。或者,如果您有XChaCha20-Poly1305 (请注意X),那么现在的大小(192位)足够大,可以使用随机的非use。
另外,请注意,PBKDF2虽然仍然安全,但不再被认为是基于密码的密钥派生函数的最先进的状态,而still或Argon2id是首选。此外,5次迭代是非常弱的,您的代码很容易受到暴力攻击,特别是使用这种强度的密码。
https://stackoverflow.com/questions/70452153
复制相似问题