用私钥在python中简单地加密/解密lib

2024-04-29 01:03:56 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种用密钥加密/解密字符串的简单方法。

有点像:

key = '1234'
string =  'hello world'
encrypted_string = encrypt(key, string)
decrypt(key, encrypted_string)

我找不到任何简单的方法。


Tags: 方法key字符串helloworldstring密钥encrypted
3条回答

http://www.dlitz.net/software/pycrypto/应该做你想做的。

从他们的文档页面中获取。

>>> from Crypto.Cipher import DES
>>> obj=DES.new('abcdefgh', DES.MODE_ECB)
>>> plain="Guido van Rossum is a space alien."
>>> len(plain)
34
>>> obj.encrypt(plain)
Traceback (innermost last):
  File "<stdin>", line 1, in ?
ValueError: Strings for DES must be a multiple of 8 in length
>>> ciph=obj.encrypt(plain+'XXXXXX')
>>> ciph
'\021,\343Nq\214DY\337T\342pA\372\255\311s\210\363,\300j\330\250\312\347\342I\3215w\03561\303dgb/\006'
>>> obj.decrypt(ciph)
'Guido van Rossum is a space alien.XXXXXX'

对于python 2,应该使用keycharhttp://www.keyczar.org/

对于python 3,在keychar可用之前,我已经编写了简单的crypthttp://pypi.python.org/pypi/simple-crypt

我迟了两年才回答这个问题,因为自从这个问题提出以来,情况已经发生了变化。

注意,以前对这个问题的回答使用弱密码(按今天的标准),没有任何关键的增强。这里的两个建议可能更安全。

pyDES是完全用python编写的DES和Triple DES实现。

下面是一个简单的、可移植的示例,它应该足够安全,可以满足基本的字符串加密需求。只需将pyDES模块放在与程序相同的文件夹中,然后尝试:

发件人的计算机

>>> from pyDES import *  # pyDes if installed from pip
>>> ciphertext = triple_des('a 16 or 24 byte password').encrypt("secret message", padmode=2)  #plain-text usually needs padding, but padmode = 2 handles that automatically
>>> ciphertext
')\xd8\xbfFn#EY\xcbiH\xfa\x18\xb4\xf7\xa2'  #gibberish

收件人的计算机

>>> from pyDES import *
>>> plain_text = triple_des('a 16 or 24 byte password').decrypt(')\xd8\xbfFn#EY\xcbiH\xfa\x18\xb4\xf7\xa2', padmode=2)
>>> plain_text
"secret message"

相关问题 更多 >