十行 Python 代码,使用 OTP 实现对文件的加密解密

  发布时间:2025-12-07 20:10:55   作者:玩站小弟   我要评论
不知道你是否相信,只需 10 行代码,就可以使用 Python 100% 安全地加密文件。这背后的原理就是 OTP。原理OTP 就是 One-time password,翻译过来就是一次性密码。它的原 。

不知道你是代对文否相信,只需 10 行代码,码使就可以使用 Python 100% 安全地加密文件  。实现这背后的加密解密原理就是 OTP 。

原理

OTP 就是代对文 One-time password,亿华云翻译过来就是码使一次性密码 。它的实现原理非常简单 ,加密的加密解密过程就是明文和密钥(key)进行异或 ,得到密文 ,源码库代对文而解密的码使过程就是密文和密钥(key)异或,得到明文 。实现举例如下:

加密 :

解密:

理论上 ,加密解密基于以下假设,代对文这个加密被认为是码使牢不可破的服务器租用 :

密钥是真正随机的密钥长度与信息长度相同密钥永远不会全部或部分重复使用密钥 key 很安全,不会公开应用:加密文件

如果自己有一个私密的实现文件 ,那么完全可以使用 OTP 来加密 ,密钥保存在自己手里 ,很安全  。云计算话不多说 ,直接上代码 :

加密文件:

复制import os

def encryption(file): toBeEncryptedFile = open(file, rb).read() size = len(toBeEncryptedFile) otpKey = os.urandom(size) with open(file.split(.)[0] + .key, wb) as key: key.write(otpKey) encryptedFile = bytes (a ^ b for (a, b) in zip(toBeEncryptedFile, otpKey)) with open(file, wb) as encrypted: encrypted.write(encryptedFile)1.2.3.4.5.6.7.8.9.10.

这段代码一共 10 行 ,密钥 optKey 随机生成并保存在文件中 ,然后用这个密钥加密文件,当需要加密文件时  ,这样调用 encryption 函数 :

复制if __name__ == "__main__": encryption("/Users/aaron/Downloads/1/银行卡.JPG")1.2.

成功执行代码后,我们无法再预览或打开我们的图像,免费模板因为它现在是加密的。此外 ,我们的文件夹中有一个新的密钥文件“银行卡.key” 。

现在 ,建站模板我们来解密它 。

解密文件只需要 6 行代码 :

复制def decryption(file, otpKey): encryptedFile = open(file, rb).read() otpKey = open(otpKey, rb).read() decryptedFile = bytes (a ^ b for (a, b) in zip(encryptedFile, otpKey)) with open(file, wb) as decrypted: decrypted.write(decryptedFile)1.2.3.4.5.6.

这样调用:

复制if __name__ == "__main__": # encryption("/Users/aaron/Downloads/1/银行卡.JPG") decryption("/Users/aaron/Downloads/1/银行卡.JPG", "/Users/aaron/Downloads/1/银行卡.key")1.2.3.

这样就完成了解密:

完整代码

复制import os

def encryption(file): toBeEncryptedFile = open(file, "rb").read() size = len(toBeEncryptedFile) otpKey = os.urandom(size) with open(file.split(".")[0] + ".key", "wb") as key: key.write(otpKey) encryptedFile = bytes(a ^ b for (a, b) in zip(toBeEncryptedFile, otpKey)) with open(file, "wb") as encrypted: encrypted.write(encryptedFile)def decryption(file, otpKey): encryptedFile = open(file, "rb").read() otpKey = open(otpKey, "rb").read() decryptedFile = bytes(a ^ b for (a, b) in zip(encryptedFile, otpKey)) with open(file, "wb") as decrypted: decrypted.write(decryptedFile)if __name__ == "__main__": # encryption("/Users/aaron/Downloads/1/银行卡.JPG") decryption("/Users/aaron/Downloads/1/银行卡.JPG", "/Users/aaron/Download1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.
  • Tag:

相关文章

  • 2024攻防演练:4大趋势凸显,如何做好常态化安全防御?

    近年来,全国性攻防演练逐渐常规化。攻防演练不仅是对各企事业单位网络安全能力的大考,更是透视未来安全趋势、升级防御策略的绝佳窗口。在技术升级与威胁演变的双重驱动下,2024年的攻防演练呈现出哪些新趋势和
    2025-12-07
  • 构建安全软件供应链的12条建议

    软件供应链攻击正成为一种常见的非法获取商业信息的犯罪形式。有研究数据显示,现代软件系统的底层代码中超过90%都是开源的,这意味着几乎所有软件的研发与应用都存在着一条供应链,包括各种组件的引用,以及在软
    2025-12-07
  • 访问管理是确保现代工作场所安全的的五个关键原因

    近年来,我们的工作方式发生了翻天覆地的变化。我们现在在数字生态系统中运作,远程工作和对多种数字工具的依赖是常态而不是例外。您可能从自己的生活中了解到,这种转变带来了我们永远不想放弃的超人生产力水平。但
    2025-12-07
  • 大学悄悄在课桌下安装传感器后,学生们黑了这些设备,还写了个开源指南

    10月初某个晚上,美国东北大学跨学科科学与工程综合大楼ISEC)里正在进行某个“大工程”。根据隐私研究所博士生Maxvon von Hippel回忆,当天晚上,学校正在楼里的所有桌子下安装传感器。​I
    2025-12-07
  • 网络安全实战对抗中的观察与思考

    近日,一场行业瞩目的大型实战化网络安全攻防演练活动落下帷幕,在这场没有硝烟的博弈中,攻击方一路攻城掠寨,防守方依托纵深防御体系,从防护、监测到溯源,步步为营,寸土不让。在本次攻防演练的过程中,绿盟科技
    2025-12-07
  • 反网络钓鱼策略不起作用的六个原因

    网络钓鱼尝试通常就像在桶里钓鱼一样——只要有足够的时间,网络攻击者完全有可能钓到受害者。一旦他们认识到一些受害者在网络安全方面一直比较脆弱,就会继续以他们为目标,这样的网络钓鱼就会一直持续下去。咨询机
    2025-12-07

最新评论