【问题标题】:Cryptography output limit characters密码学输出限制字符
【发布时间】:2022-01-07 02:01:21
【问题描述】:

我正在尝试使用密码库加密文件名,但输出太长以至于 windows 不会重命名它并给我错误。有人问过here,但没有解决方案。

fileName= f.encrypt(b'#Filenamehere')

print(fileName)

输出

b'gAAAAABhpf2t5brpCcfFoMZ9NvQ9R21uCeGGpVGZE2L_xfWwSw4IwSEj0Eos5smAmfZz3nySqGXsQOCjbThrTAFZuBOD3r1-t-aaV6RVpHWadybdE5A5RKVudM8BoD4_wvksaw4W9swNqgDZuGw=='

有没有办法在密码库中将输出的加密消息限制为一定数量。

【问题讨论】:

  • 为什么要这样更改文件名?
  • 我正在尝试加密我的文件,但我也想更改文件名,这样没人知道它是什么。 Windows 对文件名字符有限制。有没有其他方法可以做到这一点。
  • 您显然在使用 Fernet。对于许多问题,Fernet 是一个不错的选择,但不是全部。您可以看到生成的“令牌”here 的格式。令牌总是大于输入,因此您不能使用已经是最大大小的文件名并将其替换为加密文件名。您可以通过 1)从令牌中删除时间戳和版本字节,以及 2)使用比 base64 更大的字母(例如 base96 或 Windows 文件名允许的任何字母)重新编码输出。

标签: python windows cryptography character-limit


【解决方案1】:

更改文件名,这样没人知道它是什么。 Windows 对文件名字符有限制。有没有其他方法可以做到这一点。

我建议看看 Vernam 密码,cryptomuseum.com article 解释它是如何工作的并描述它的使用历史。 Vernam 易于实现,密文长度与明文相同,但要求密钥长度不小于明文。

请注意,由于它确实处理位,您可能会得到 0-127 范围之外的字节(我不确定 Windows 文件系统将如何对此作出反应)或文件名中不允许字符的字节

【讨论】:

  • 您使用 ciper 的解决方案很棒,我没想到,哈哈。但我认为这可能会在加密和解密时产生冲突问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
相关资源
最近更新 更多