在python中进行加密的最佳方法是什么?

时间:2020-04-25 02:07:56

标签: python cryptography

我是python的新手,几年前,我在纸上制作了一个单词加密系统,我想使用代码自动将纯文本转换为加密版本,然后对其进行解密。我应该如何计划呢?香港专业教育学院从未真正做过那么多与python 3.7和id真的很感激有人可以指出我正确的方向。谢谢!我使用一个四字母移位开始,所以A = E等,然后每个字母被赋予一个随机的两位数字,并且我也给几个简单的单词指定了两位数字,以使其更简单。然后在消息是一堆数字之后,我有9个字母,每个字母的值都为0-9,因此您将数字转换为每个数字所代表的字母,最后只剩下10个可以转换为任何消息的字母。这只是我在四处乱搞,所以我不担心标点符号之类的事情。它只是一个入门项目。

P.S。很抱歉成为一个完整的菜鸟,我只是不知道从哪里开始

1 个答案:

答案 0 :(得分:-1)

在Python中编写与密码相关的软件需要使用密码模块。这些模块包含最流行的加密算法的实现,例如,使用AES进行加密/解密,使用SHA进行散列,伪随机数生成器,以及更多,更多功能,无论是使用纯python还是作为流行密码库的包装。此外,由于Python开箱即用地支持bignums,因此它是试验密码算法的绝佳平台。

但是,在开始这一旅程之前,强烈建议所有初学者参加认真的“密码学101”课程。这是获得该领域概述并避免所有太流行的初学者错误的关键。毕竟,与编程不同,有缺陷的加密应用程序不会生成编译器错误消息,但它们仍会损坏。举例说明:问题中提到的示例是Ceasar的Cipher,这是一种经典算法,几乎在所有密码学入门的第一堂课中都提到了该算法,只是表明它很容易被频率分析所击败。另一个例子是,即使算法本身是:天真地构建构件块/算法也不一定会导致安全的构造。什么是安全的:sign-then-encrypt or encrypt-then-sign

网上有很多密码学101课程,包括教材,教程和在线讲座形式。您选择哪一个取决于个人喜好。 Prof. Paar's series of 24 lectures on Basic Applied Cryptography(面向所有初学者)是一个受欢迎的切入点,该切入点也可以在YouTube上使用,但随时可以浏览其他介绍。如果您想学习书籍,并且想使用Python,那么Svetlin Nakov的Practical Cryptography for Developers是免费的进行中的书籍,可能会有用。

无论您选择哪种密码学101课程,都必须使用密码模块,然后在Python中进行练习和示例。当然,实现诸如Ceasar的Cipher之类的简单算法不需要这样的模块:这可以使用Python本身完成,而无需外部模块。但是,一旦您更深入地研究应用密码学,加密模块将变得非常方便,因为对于初学者和有经验的用户而言,“手动”实施当前的加密算法可能相当复杂,而且,最佳实践是使用经过测试的以及经过同行评审的密码库和模块,而不用滚动自己的实现,无论它多么有启发性。

此答案的主要意义是,您使用哪种特定的工具和语言来实施加密并不重要,您需要先了解加密基础知识,了解最佳实践,不要尝试变得幻想起来,不要推出自己的解决方案。始终牢记,即使对于专家而言,密码结构的设计和使用中的错误也可能是微妙的。坚持使用由密码学界审查过的良好设计模式。一旦了解了基础知识,就可以将知识自动转移到特定的编程语言和工具上。