Python如何玩转加密?

密码术俱乐部的规则之一是永远不要发明自己的密码系统。密码俱乐部的第二条规则是:永远不要自己实现密码系统:在现实世界中,密码系统的实现和设计中发现了很多漏洞。

Python如何玩转加密?

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

(0)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
主编的头像主编认证作者
上一篇 2019年5月13日 上午8:36
下一篇 2019年5月13日 上午9:21

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部