当前位置: 首页 > 科技观察

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

时间:2023-03-20 14:58:17 科技观察

不知道你信不信,只需10行代码,你就可以使用Python100%安全加密文件。这背后的原理是OTP。原理OTP是One-timepassword,翻译过来就是一次性密码。它的原理很简单。加密过程是将明文与密钥(key)进行异或得到密文,解密过程是将密文与密钥(key)进行异或得到明文。以下是一些示例:加密:解密:理论上,基于以下假设,此加密被认为是牢不可破的:密钥是真正随机的密钥长度与消息长度相同密钥永远不会全部或部分重复使用密钥是secure,不会公开使用:加密文件如果你有私人文件,可以使用OTP加密,密钥掌握在自己手中,非常安全。话不多说,直接上代码:(file.split('.')[0]+'.key','wb')作为密钥:key.write(otpKey)encryptedFile=bytes(a^bfor(a,b)inzip(toBeEncryptedFile,otpKey))withopen(file,'wb')asencrypted:encrypted.write(encryptedFile)这段代码一共10行,密钥optKey随机生成保存在文件中,然后用这个密钥加密文件,当文件需要加密时,调用加密函数如下:if__name__=="__main__":encryption("/Users/aaron/Downloads/1/bankcard.JPG")代码执行成功后,我们可以不再预览或打开我们的图像,因为它现在已加密。此外,我们的文件夹中有一个新的密钥文件“bankcard.key”。现在,让我们解密它。解密一个文件只需要6行代码:defdecryption(file,otpKey):encryptedFile=open(file,'rb').read()otpKey=open(otpKey,'rb').read()decryptedFile=bytes(a^bfor(a,b)inzip(encryptedFile,otpKey))withopen(file,'wb')asdecrypted:decrypted.write(decryptedFile)调用如下:if__name__=="__main__":#encryption("/Users/aaron/Downloads/1/bankcard.JPG")decrypt("/Users/aaron/Downloads/1/bankcard.JPG","/Users/aaron/Downloads/1/bankcard.key")并完成理解解密:完成代码importosdefencryption(file):toBeEncryptedFile=open(file,"rb").read()size=len(toBeEncryptedFile)otpKey=os.urandom(size)withopen(file.split(".")[0]+".key","wb")作为密钥:key.write(otpKey)encryptedFile=bytes(a^bfor(a,b)inzip(toBeEncryptedFile,otpKey))with打开(文件,“wb”)加密:encrypted.write(encryptedFile)def解密(文件,otpKey):encryptedFile=open(file,“rb”).read()otpKey=open(otpKey,“rb”)。读取()解密文件=bytes(a^bfor(a,b)inzip(encryptedFile,otpKey))withopen(file,"wb")asdecrypted:decrypted.write(decryptedFile)if__name__=="__main__":#encryption("/Users/aaron/Downloads/1/银行卡.JPG")decryption("/Users/aaron/Downloads/1/银行卡.JPG","/Users/aaron/Download

猜你喜欢