密码术俱乐部的规则之一是永远不要发明自己的密码系统。密码俱乐部的第二条规则是:永远不要自己实现密码系统:在现实世界中,密码系统的实现和设计中发现了很多漏洞。
Python中一个有用的基本加密库叫做密码学。它不仅是一个“安全”的基础库,也是一个“危险”的层。“危险”层需要更多的关注和相关知识,很容易造成安全漏洞。在这篇介绍性文章中,我们将不涉及“危险”层的任何内容!
密码术库中最有用的高级安全特性是Fernet实现。Fernet是一个实用的加密缓冲标准。它不适用于非常大的文件,例如超过千兆字节的文件,因为它要求您一次将要加密或解密的内容加载到内存缓冲区中。
Fernet支持对称(即秘密密钥)加密*:加密和解密使用相同的密钥,因此必须保持安全性。
生成密钥很简单:
k=fernet .Fernet.generate_key()类型(k)类”字节”
这些字节可以在安全机器上以适当的权限写入文件。
一旦你有了密钥,加密也很容易:
frn=fernet .加密的[:10加密的Fernet(k)frn .解密(加密)b ‘ xmarksthespot ‘
如果你在你的机器上加密,你会看到稍微不同的值。不仅仅是因为(我希望)你已经生成了一个不同于我的密钥,还因为Fernet用一些随机生成的缓冲区连接了要加密的值。这是我之前提到的“实践”之一:它将防止对手区分哪些加密值是相同的。
解密也很简单:
请注意,这仅加密和解密字节字符串。为了加密和解密文本字符串,通常需要使用UTF-8对它们进行编码和解码。
20世纪中期密码学最有趣的进步之一是公钥加密。它可以在释放加密密钥的同时对解密密钥保密。例如,它可以用来保存服务器使用的应用编程接口密钥:服务器是可以访问解密密钥的一方,但是任何人都可以保存公共加密密钥。
虽然密码学没有任何支持公钥加密的安全特性,但是PyNaCl库有。PyNaCl封装并提供了一些使用丹尼尔·伯恩斯坦(Daniel J. Bernstein)发明的氯化钠加密系统的好方法。
氯化钠总是同时加密和签名,或者同时解密和验证签名。这是一种防止基于延展性的方法,罪犯在延展性的基础上修改加密值。
极牛网精选文章《Python如何玩转加密?》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/5281.html