2

我是加密的新手,并且见过许多不同的库,但是其中许多是多年前创建的,我只是想知道人们今天使用什么在 python 中进行加密,以及可以使用它在 C# .net 中解密的东西

我研究过 pycrypto,但从我读过的所有帖子来看,它似乎有一段时间没有更新(尽管它看起来确实很受欢迎),而且人们在让它与 .net 一起工作方面遇到了真正的困难,

有什么好的建议吗?我不认为有一个可用的.net 和 python 版本的库吗?它确实需要是可靠的加密,例如 AES。

4

2 回答 2

4

对于将来的任何人,我做了一些测试,发现这非常适合我的目的,silverlight 示例几乎可以直接移植到 C#。

使用 pycrypto 和 System.Security.Cryptography

http://japrogbits.blogspot.co.nz/2011/02/using-encrypted-data-between-python-and.html

于 2012-06-27T02:21:18.870 回答
0

我们不知道数据是如何移动的,所以这里有一些建议:

  1. 如果客户端和服务器通过双向通道进行通信,则使用 SSL。Python 对 SSL 有很好的内置支持,我相信 C# 也有很好的支持。这很容易设置,您甚至可以使用stunnel,这样您的 Python 和 C# 代码就不必接触加密。

  2. 如果客户端和服务器异步通信(例如,电子邮件、批处理作业等),则使用 PGP/GPG。加密和解密可以卸载到外部进程,例如GPG,因此实现成本(无论是什么语言)将相对最小,并且您的 Python 和 C# 代码不必接触加密。

这些都不需要使用库。

在这两种情况下,您都需要创建一个公钥/私钥对。正常的过程是在服务器上安装这个密钥对,并将公钥与客户端捆绑在一起。如果您的应用程序在“客户端”和“服务器”之间没有简单的划分,那么您将需要弄清楚其他事情,但您应该先询问,因为很容易弄错密码。容易得吓人。

不要使用“AES”。

如果您在某处的源代码中键入“AES”,那么您做错了。

另外,不要使用 AES。

AES 是一种密码,它是密码系统的组成部分之一。你不想要一个构建块,你想要一个完整的系统。 SSL 和 PGP/GPG 是完整的系统。如果您尝试使用 AES 发明自己的系统,您可能会在某个地方犯一个简单的错误,这是一件非常糟糕的事情。

创建一个可行的密码系统是困难的。就像脑外科手术一样,有很多人会拿起刀,但只有少数人知道在哪里切。

我有没有提到你不应该使用 AES?

好的,不要使用 AES。

不要忘记避免 AES。

于 2012-06-26T06:33:42.740 回答