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

在python中进行加密的最佳方法是什么?,python,cryptography,Python,Cryptography,我是python新手,几年前我在纸上制作了一个word加密系统,我想使用代码自动将纯文本转换为加密版本,然后能够对其进行解密。我该怎么计划呢?我从来没有在Python3.7上做过那么多,如果有人能给我指出正确的方向,我会非常感激。谢谢我用一个四个字母的移位来开始,所以a=E等等,然后每个字母都有一个随机的两位数,我也有一些简单的单词,也有两位数,使它更简单。然后在信息是一组数字之后,我有九个字母,每个字母的值为0-9,然后你把数字转换成每个数字代表的字母,最后你只得到10个字母,可以转换成任何信

我是python新手,几年前我在纸上制作了一个word加密系统,我想使用代码自动将纯文本转换为加密版本,然后能够对其进行解密。我该怎么计划呢?我从来没有在Python3.7上做过那么多,如果有人能给我指出正确的方向,我会非常感激。谢谢我用一个四个字母的移位来开始,所以a=E等等,然后每个字母都有一个随机的两位数,我也有一些简单的单词,也有两位数,使它更简单。然后在信息是一组数字之后,我有九个字母,每个字母的值为0-9,然后你把数字转换成每个数字代表的字母,最后你只得到10个字母,可以转换成任何信息。这只是我在胡闹,所以我不必费心于标点符号之类的东西。这只是一个起步项目


顺便说一句,作为一个彻头彻尾的noob,我真的不知道从哪里开始

用Python编写加密相关软件需要使用加密模块。这些模块包含最流行的加密算法的实现,例如使用AES进行加密/解密、使用SHA进行散列、伪随机数生成器,以及更多,可以使用纯python,也可以作为流行加密库的包装器。此外,由于Python支持开箱即用的bignums,因此它是一个实验加密算法的优秀平台

然而,在开始这段旅程之前,强烈鼓励初学者认真学习密码学101课程。这对于了解该领域的概况,避免初学者犯下太普遍的错误是至关重要的。毕竟,与编程不同,有故障的加密应用程序不会生成编译器错误消息,但它们仍然会被破坏。举例说明:问题中提到的例子是一个Cesar密码,这是一个经典算法,在几乎所有密码学入门的第一堂课中都提到过,只是为了表明它可以很容易地被频率分析打败。另一个例子是,天真地组合构建块/算法并不一定会导致安全构造,即使算法本身是:例如,什么是安全的:

网上有许多密码学101课程,包括教科书、教程和在线讲座形式。你选择哪一个是个人品味的问题。一个流行的入门点是面向初学者的,这也可以在YouTube上找到,但也可以随意浏览其他介绍。如果您喜欢从书本中学习,并且因为您想使用Python,Svetlin Nakov的著作是一本正在进行的免费书籍,可能会很有用

无论您选择什么密码学101课程,都只需使用加密模块在Python中进行练习和示例即可。当然,实现像Cesar的Cipher这样的简单算法并不需要这样的模块:这可以通过Python本身完成,而不需要外部模块。但一旦你深入应用密码学,加密模块将变得非常方便,因为对于初学者和有经验的用户来说,手工实现当前的加密算法可能相当复杂,而且,使用经过战斗测试和同行评审的加密库和模块是最佳做法,而不是滚动您自己的实现,无论这将是多么有益的


从这个答案中可以看出,使用哪些特定的工具和语言来实现加密并不重要:您需要首先熟悉加密的基础知识,了解最佳实践,不要想入非非,也不要推出自己的解决方案。请始终记住,密码构造的设计和使用中的错误可能是微妙的,即使对专家来说也是如此。坚持使用经过密码学社区审查的使用良好的设计模式。一旦你理解了基础知识,将你的知识转移到特定的编程语言和工具几乎是自动的。

你提到的第一部分听起来像凯撒密码。这是一个很好的起点,也许你可以从这里开始!欢迎来到StackOverflow。请看-你的问题目前是非常开放的,不适合这样做。第一条评论提供了一个良好的开端。这里有另一个你可能会觉得有用的链接:当你在项目中遇到问题时,请回来再问一次:pycrypto 2.6.1的最新版本已经有七年历史了,并且被广泛认为是不安全的。。。那么pycrypto在什么意义上是规范库呢?你说得对!答案经过编辑以反映pycrypto被标记为不安全。我应该推荐加密模块,还是最好保持答案的通用性?谢谢你的指导。密码学可能是其中一个领域,除非你是专家,
在这种情况下,推荐可能是不明智的!同意!cryptography.io中的加密模块是积极维护的,但这也不应被解释为对质量的认可。这就是为什么我不愿意把它添加到答案中。谢谢你的有用反馈。