Python 允许密码为任意长度的密码
我发现以下代码可以用python加密excel文件。但是,我注意到它只能使用长度为16或32个字符的密码/密钥来加密文件。我希望用户能够使用8-32个字符的任意长度密码来加密文件。我在想,也许用户可以输入一个8个字符的密码,然后我可以添加一些填充字符,使其长度达到16。然而,这似乎不是一个被使用的想法 因此,我想知道如何创建不同长度的密钥来加密文件Python 允许密码为任意长度的密码,python,encryption,pycrypto,pycryptodome,Python,Encryption,Pycrypto,Pycryptodome,我发现以下代码可以用python加密excel文件。但是,我注意到它只能使用长度为16或32个字符的密码/密钥来加密文件。我希望用户能够使用8-32个字符的任意长度密码来加密文件。我在想,也许用户可以输入一个8个字符的密码,然后我可以添加一些填充字符,使其长度达到16。然而,这似乎不是一个被使用的想法 因此,我想知道如何创建不同长度的密钥来加密文件 def pad(s): return s + b"\0" * (AES.block_size - len(s) % AES.block_si
def pad(s):
return s + b"\0" * (AES.block_size - len(s) % AES.block_size)
def encrypt(message, key, key_size=256):
message = pad(message)
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, iv)
return iv + cipher.encrypt(message)
def decrypt(ciphertext, key):
iv = ciphertext[:AES.block_size]
cipher = AES.new(key, AES.MODE_CBC, iv)
plaintext = cipher.decrypt(ciphertext[AES.block_size:])
return plaintext.rstrip(b"\0")
def encrypt_file(file_name, key):
with open(file_name, 'rb') as fo:
plaintext = fo.read()
enc = encrypt(plaintext, key)
with open(file_name + ".enc", 'wb') as fo:
fo.write(enc)
def decrypt_file(file_name, key):
with open(file_name, 'rb') as fo:
ciphertext = fo.read()
dec = decrypt(ciphertext, key)
with open(file_name[:-4], 'wb') as fo:
fo.write(dec)
encryptPassword = "some 16 or 32 character password"
key = encryptPassword.encode("utf8")
encrypt_file(excelSheet, key)
您似乎混淆了密钥和密码的概念。它们是两种不同的东西。您可以通过将密码传递给服务器来使用密码生成密钥。这会将任意长度的密码转换为固定长度的密钥,您可以使用该密钥进行加密和解密。将密码转换为密钥的过程也应该相对简单,以使暴力攻击更加困难。您似乎混淆了密钥和密码的概念。它们是两种不同的东西。您可以通过将密码传递给服务器来使用密码生成密钥。这会将任意长度的密码转换为固定长度的密钥,您可以使用该密钥进行加密和解密。将密码转换为密钥的过程也应该相对简单,以使暴力攻击更加困难。