我有一个PEM格式的RSA公钥+ PKCS#1(我猜):
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAJNrHWRFgWLqgzSmLBq2G89exgi/Jk1NWhbFB9gHc9MLORmP3BOCJS9k
onzT/+Dk1hdZf00JGgZeuJGoXK9PX3CIKQKRQRHpi5e1vmOCrmHN5VMOxGO4d+zn
JDEbNHODZR4HzsSdpQ9SGMSx7raJJedEIbr0IP6DgnWgiA7R1mUdAgMBAAE=
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
我想在Python中获取其ASN1编码版本的SHA1摘要.第一步应该是读取此键,但我没有在PyCrypto中执行此操作:
>> from Crypto.PublicKey import RSA
>> RSA.importKey(my_key)
ValueError: RSA key format is not supported
Run Code Online (Sandbox Code Playgroud)
PyCrypto的文档说支持PEM + PKCS#1,所以我很困惑.我也试过M2Crypto,但事实证明M2Crypto不支持PKCS#1但只支持X.509.
我花了两天时间尝试为Paramiko模块安装pyCrypto.
所以,我遇到的第一个问题是:
>>> import paramiko
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python\lib\site-packages\paramiko\__init__.py", line 31
, in <module>
from paramiko.transport import SecurityOptions, Transport
File "C:\Program Files\Python\lib\site-packages\paramiko\transport.py", line 4
7, in <module>
from paramiko.dsskey import DSSKey
File "C:\Program Files\Python\lib\site-packages\paramiko\dsskey.py", line 26,
in <module>
from Crypto.PublicKey import DSA
ImportError: No module named 'Crypto'
Run Code Online (Sandbox Code Playgroud)
实际上它非常有趣,因为我使用Windows并且它不关心大写.我将文件夹名称从crypto更改为Crypto,这个特殊问题消失了.
现在它想要winrandom:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python\lib\site-packages\paramiko\__init__.py", line 31
, in <module>
from paramiko.transport …Run Code Online (Sandbox Code Playgroud) 我为Python 3.3和3.4找到了一些PyCrypto安装程序,但没有为Python 3.5提供任何安装程序.
当我尝试使用PyCrypton时pip install,它说:
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.
Run Code Online (Sandbox Code Playgroud)
有没有办法在Windows 10中的Python 3.5上安装PyCrypto?谢谢!
我需要在Python中使用RSA加密和解密的帮助.
我正在创建一个私钥/公钥对,用密钥加密消息并将消息写入文件.然后我正在从文件中读取密文并使用密钥解密文本.
我在解密部分遇到问题.正如您在下面的代码中所看到的,当我输入decrypted = key.decrypt(message)该程序时,解密的消息再次加密.好像它不是从文件中读取密文.
任何人都可以帮我写这段代码,所以解密从文件中读取密文,然后使用密钥解密密文?
import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random
random_generator = Random.new().read
key = RSA.generate(1024, random_generator) #generate public and private keys
publickey = key.publickey # pub key export for exchange
encrypted = publickey.encrypt('encrypt this message', 32)
#message to encrypt is in the above line 'encrypt this message'
print 'encrypted message:', encrypted #ciphertext
f = open ('encryption.txt', 'w'w)
f.write(str(encrypted)) #write ciphertext to file
f.close()
#decrypted code below
f = open ('encryption.txt', 'r') …Run Code Online (Sandbox Code Playgroud) 我刚刚运行了"pip install -U steem"命令,安装工作正常,直到它无法安装pycrypto.之后我做了"pip install cryptography"命令,因为我认为它是缺少的包.所以我的问题是,如何在没有pycrypto-error(或者另外还有pycrypto-package)的情况下安装steem,以及如何卸载我不需要的cryptography-Package.(我使用的是Windows 7和Python 3)
Requirement already up-to-date: python-dateutil in c:\users\***\appdata\lo
cal\programs\python\python36\lib\site-packages (from dateparser->maya->steem)
Collecting regex (from dateparser->maya->steem)
Downloading regex-2017.06.23-cp36-none-win_amd64.whl (245kB)
100% |????????????????????????????????| 245kB 499kB/s
Collecting pytzdata (from pendulum->maya->steem)
Downloading pytzdata-2017.2-py2.py3-none-any.whl (462kB)
100% |????????????????????????????????| 471kB 965kB/s
Installing collected packages: urllib3, idna, chardet, certifi, requests, pycryp
to, funcy, w3lib, voluptuous, diff-match-patch, scrypt, prettytable, appdirs, la
ngdetect, ruamel.yaml, humanize, tzlocal, regex, dateparser, pytzdata, pendulum,
maya, ecdsa, pylibscrypt, ujson, toolz, steem
Running setup.py install for pycrypto ... error
Complete output …Run Code Online (Sandbox Code Playgroud) 我正在尝试熟悉pycrypto模块,但缺乏清晰的文档会使事情变得困难.
首先,我想了解签名和验证数据.有人可以提供一个如何写这个的例子吗?
我想用PyCrypto加密python中的一些数据.
但是我在使用时遇到错误key = RSA.importKey(pubkey):
RSA key format is not supported
Run Code Online (Sandbox Code Playgroud)
密钥生成时:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.key -out mycert.pem
Run Code Online (Sandbox Code Playgroud)
代码是:
def encrypt(data):
pubkey = open('mycert.pem').read()
key = RSA.importKey(pubkey)
cipher = PKCS1_OAEP.new(key)
return cipher.encrypt(data)
Run Code Online (Sandbox Code Playgroud) 我正在尝试将结构库安装到旧机器上./ usr/lib中有一些遗留库,例如libgmp.
(py27)[qrtt1@hcservice app]$ ls /usr/lib|grep gmp
libgmp.a
libgmp.so
libgmp.so.3
libgmp.so.3.3.3
libgmpxx.a
libgmpxx.so
libgmpxx.so.3
libgmpxx.so.3.0.5
Run Code Online (Sandbox Code Playgroud)
我已经在我的$ HOME/app中编译了libgmp 5.x,然后我尝试安装pycrypto(它是fab的依赖):
CFLGAS=-I/home/qrtt1/app/include LDFLGAS=-L/home/qrtt1/app/lib pip install pycrypto
Run Code Online (Sandbox Code Playgroud)
我发现编译/链接选项中没有我的include或lib目录:
gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/home/qrtt1/app/include/python2.7 -c src/_fastmath.c -o build/temp.linux-i686-2.7/src/_fastmath.o
gcc -pthread -shared build/temp.linux-i686-2.7/src/_fastmath.o -lgmp -o build/lib.linux-i686-2.7/Crypto/PublicKey/_fastmath.so
building 'Crypto.Hash._MD2' extension
gcc -pthread -fno-strict-aliasing -fwrapv -Wall -Wstrict-prototypes -fPIC -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/home/qrtt1/app/include/python2.7 -c src/MD2.c -o build/temp.linux-i686-2.7/src/MD2.o
gcc -pthread -shared build/temp.linux-i686-2.7/src/MD2.o -o build/lib.linux-i686-2.7/Crypto/Hash/_MD2.so
building 'Crypto.Hash._MD4' extension
gcc -pthread -fno-strict-aliasing -fwrapv …Run Code Online (Sandbox Code Playgroud) 该文件是指我们GitHub的例子,但是这是一个有点稀疏而神秘.
它说:
# created with:
# crypt.crypt('This is my Password', '$1$SomeSalt')
password: $1$SomeSalt$UqddPX3r4kH3UL5jq5/ZI.
Run Code Online (Sandbox Code Playgroud)
但crypt.crypt不会发出示例所示的内容.它还使用MD5.
我试过这个:
# python
import crypt
crypt.crypt('This is my Password', '$6$somereallyniceandbigrandomsalt$')
>> '$69LxCegsnIwI'
Run Code Online (Sandbox Code Playgroud)
但是用户的密码字段应该是这样的:
password: $6$somereallyniceandbigrandomsalt$UqddPX3r4kH3UL5jq5/ZI.
Run Code Online (Sandbox Code Playgroud)
其中包括三个$分隔符6(分隔它表示SHA-512哈希),盐和加密密码.
请注意,python crypt文档没有提及有关$ N格式的任何内容.
问题:
供应的盐是否crypt.crypt应该以尾随$结尾或以$ N $ SALT格式结束?
Python文档是指DES,但是如何调用SHA-512或MD5以及它的文档在哪里?
我是否真的应该拿出输出crypt.crypt并切断前6 美元并使$ N $ SALT $ CRYPTED?这是ansible需要的吗?
我找不到任何关于此的信息。我收到错误:
Traceback (most recent call last):
File "/path/to/pwdb.py", line 265, in <module>
password_db()
File "/path/to/pwdb.py", line 73, in __init__
self.cipher = AES.new(key,AES.MODE_ECB)
File "/home/STACKOVERFLOW/.local/lib/python3.10/site-packages/Crypto/Cipher/AES.py", line 95, in new
return AESCipher(key, *args, **kwargs)
File "/home/STACKOVERFLOW/.local/lib/python3.10/site-packages/Crypto/Cipher/AES.py", line 59, in __init__
blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
File "/home/STACKOVERFLOW/.local/lib/python3.10/site-packages/Crypto/Cipher/blockalgo.py", line 141, in __init__
self._cipher = factory.new(key, *args, **kwargs)
SystemError: PY_SSIZE_T_CLEAN macro must be defined for '#' formats
Run Code Online (Sandbox Code Playgroud)
我很确定它收到错误的行是:
self.cipher = AES.new(key,AES.MODE_ECB)
Run Code Online (Sandbox Code Playgroud)
该脚本不久前就开始工作了。PyCrypto 是否更新了其格式或其他内容?有谁知道如何解决这个问题?如果需要,我可以提供更多代码。