我有一个包含公钥的 .cer 文件。我需要使用这个文件来验证相应私钥签名的签名。我有签名和公钥。我需要验证签名。我得到的结果是假的。下面是代码:
def verify_sign(public_key_loc, signature, data):
'''
Verifies with a public key from whom the data came that it was indeed
signed by their private key
param: public_key_loc Path to public key
param: signature String signature to be verified
return: Boolean. True if the signature is valid; False otherwise.
'''
#pdb.set_trace()
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
from base64 import b64decode
try:
pub_key = open(public_key_loc, "r").read()
rsakey = RSA.importKey(pub_key)
signer = PKCS1_v1_5.new(rsakey)
digest …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用node.js进行加密,如下所示(node.js v0.10.33):
var crypto = require('crypto');
var assert = require('assert');
var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL
var key = 'mykey';
var text = 'this-needs-to-be-encrypted';
var cipher = crypto.createCipher(algorithm, key);
var encrypted = cipher.update(text, 'utf8', 'hex') + cipher.final('hex');
console.log('encrypted', encrypted, encrypted.length)
/*
var decipher = crypto.createDecipher(algorithm, key);
try {
var decrypted = decipher.update(encrypted, 'hex', 'utf8') + decipher.final('utf8');
} catch (e) {
console.error('Couldnt decipher encrypted text. Invalid key provided', e)
} finally {
assert.equal(decrypted, text);
} …Run Code Online (Sandbox Code Playgroud) Pycrypto已正确安装(至少据我所知.一切都是最新的,我尝试卸载并重新安装pip).我不确定这里的问题是什么,但是这个代码适用于其他人的计算机,所以它必须是我的配置专门.任何帮助将不胜感激!
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/__init__.py", line 342, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py", line 398, in execute
self.check()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py", line 426, in check
include_deployment_checks=include_deployment_checks,
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/checks/registry.py", line 75, in run_checks
new_errors = check(app_configs=app_configs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/checks/urls.py", line 10, in check_url_config
return check_resolver(resolver)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/checks/urls.py", line 19, in check_resolver
for pattern in resolver.url_patterns:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/utils/functional.py", line 33, …Run Code Online (Sandbox Code Playgroud) 我需要从没有临时位置的本地私钥生成公钥,就像我们在 sshgen 中所做的那样。所以我使用 this.Here 我将我的私钥作为这样的输入传递(在执行时):
python codekey.py "-----BEGIN RSA PRIVATE KEY-----\nMIhhhhhhhhhhhhhhhh......Bidqt/YS3/0giWrtv+rMkJtv8n\nmirJ+16SZodI5gMuknvZG....................n-----END RSA PRIVATE KEY-----"
Run Code Online (Sandbox Code Playgroud)
我的代码(codekey.py):
import sys
import io
from twisted.conch.ssh import keys
k = sys.argv[1]
rsa = keys.RSA.importKey(k)
key = keys.Key(rsa)
ssh_public = key.public().toString("openssh")
print ssh_public
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "codekey.py", line 7, in <module>
rsa = keys.RSA.importKey(k)
File "/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.py", line 638, in importKey
if lines[1].startswith(b('Proc-Type:4,ENCRYPTED')):
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
Dyanamically我需要在执行我的python脚本时传递如上所示的键值,并从中生成公钥。是否可能??,我不需要在本地存储,因为为了特权和关键证券,不想破解。
我在 SO 上搜索了很多关于我的要求的完整加密解密示例。事实上,我有很多链接和示例,但没有一个适用于 AES-192-CBC 模式和 AES-256-CBC。
我有以下示例,它应该适用于所有类型,但仅适用于 AES-128-CBC 模式。我是 Python 的新手。谁能帮助我哪里出错了?
我在 Windows 上使用 Python 3.4,但无法移动到 Python 2.7。
import base64
from Crypto.Cipher import AES
class AESCipher:
class InvalidBlockSizeError(Exception):
"""Raised for invalid block sizes"""
pass
def __init__(self, key, block_size=16):
if block_size < 2 or block_size > 255:
raise AESCipher.InvalidBlockSizeError('The block size must be between 2 and 255, inclusive')
self.block_size = block_size
self.key = key
self.iv = bytes(key[0:16], 'utf-8')
print(self.key)
print(key[0:16])
def __pad(self, text):
text_length = len(text)
amount_to_pad = self.block_size - (text_length …Run Code Online (Sandbox Code Playgroud) 我在 Python + Pycryptodom (Pycrypto fork) 中使用以下代码使用 RSA PKCS#1 OAEP SHA256 ( RSA/ECB/OAEPWithSHA-256AndMGF1Padding)加密消息:
from Crypto.Cipher import PKCS1_OAEP
from Cryptodome.Hash import SHA256
cipher = PKCS1_OAEP.new(key=self.key, hashAlgo=SHA256))
ciphertext = cipher.encrypt(cek)
Run Code Online (Sandbox Code Playgroud)
和下面的Java代码来解密它:
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] cek = cipher.doFinal(ciphertext);
Run Code Online (Sandbox Code Playgroud)
但是,我得到:
Exception in thread "main" javax.crypto.BadPaddingException: Decryption error
at sun.security.rsa.RSAPadding.unpadOAEP(RSAPadding.java:499)
at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:293)
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:363)
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389)
at javax.crypto.Cipher.doFinal(Cipher.java:2165)
Run Code Online (Sandbox Code Playgroud) 我需要pycrypto,因为需要在dnspython库中使用一些函数。我在网上找到了一些帖子,表明它pycrypto已经死了。但是,我需要dnspython并且别无选择,只能使用它。我什至尝试安装,pycryptodome因为他们建议它是替代品,pycrypto但我使用dnspython库的程序引发了错误:
Traceback (most recent call last):
File "test-3-dnssec.py", line 40, in <module>
dns.dnssec.validate(answer[0],answer[1],{name:answer[0]})
File "C:\Python36\lib\site-packages\dns\dnssec.py", line 417, in _validate
_validate_rrsig(rrset, rrsig, keys, origin, now)
File "C:\Python36\lib\site-packages\dns\dnssec.py", line 371, in _validate_rrsig
if pubkey.verify(digest, sig):
File "C:\Python36\lib\site-packages\Crypto\PublicKey\RSA.py", line 372, in verify
raise NotImplementedError("Use module Crypto.Signature.pkcs1_15 instead")
NotImplementedError: Use module Crypto.Signature.pkcs1_15 instead
Run Code Online (Sandbox Code Playgroud)
根据类似的错误,这是因为使用pycryptodome而不是pycrypto. Pycryptodome就我而言,它不是 pycrypto 的替代品。
我安装了 Visual Studio 2017。我按照库的gihub 页面 …
我正在使用以下代码片段来加密文本PHP7:
$plaintext = "message to be encrypted";
$cipher = "aes-256-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = "0123456789012345";
$key = "akshayakshayaksh";
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv);
print $ciphertext;
Run Code Online (Sandbox Code Playgroud)
输出:cUXDhOEGz19QEo9XDvMzXkGFmg/YQUnXEqKVpfYtUGo=
现在,当我尝试在其中解密Python3它时,会出现错误:
from Crypto.Cipher import AES
obj2 = AES.new('akshayakshayaksh', AES.MODE_CBC, '0123456789012345')
ciphertext = "cUXDhOEGz19QEo9XDvMzXkGFmg/YQUnXEqKVpfYtUGo="
obj2.decrypt(ciphertext)
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用):
文件“<stdin>”,第 1 行,<module>
文件“/anaconda3/lib/python3.6/site-packages/Crypto/Cipher/blockalgo.py”,第 295 行,在解密返回 self._cipher.decrypt(ciphertext) ValueError:输入字符串的长度必须是 16 的倍数
我知道 AES 是一种分组密码算法。但是,我应该如何修复我的 PHP 代码,以便它生成“填充”密码,任何线索?
我正在AWS lambda 上使用Pychromeless 存储库并取得成功。
\n\n但现在我需要使用 pycrypto 依赖项,但我得到了
\n\nconfigure: error: no acceptable C compiler found in $PATH\n\xc2\xa0\n运行时make docker-build\n(放入文件后pycrypto==2.6.1)requirements.txt。
有这个线程,有人提到了同样的问题:\n\xc2\xa0
\n\n“gcc 编译器不在您的 $PATH 中。这意味着您没有安装 gcc,或者它不在您的 $PATH 变量中”。
\n\n所以尝试放置apt-get install build-essential在 Dockerfile 中,但我得到了
/bin/sh: apt-get: command not found
然后,我尝试使用\xc2\xa0yum install gcc
只为得到
\n\nThe command \'/bin/sh -c yum install gcc\' returned a non-zero code: 1
Docker-lambda [信息页面](https://hub.docker.com/r/lambci/lambda/)说:
\n\nThis …Run Code Online (Sandbox Code Playgroud) Splunklib因为Python 3.7无法在我的 Windows 机器上安装。由于pycrypto未移植到Python 3,我已将其卸载并安装pycrypodome为替代品。不幸的是,在尝试安装时splunklib,pip仍会尝试安装pycrypto.
*Installing collected packages: pycrypto, splunklib
Running setup.py install for pycrypto ... *
Run Code Online (Sandbox Code Playgroud)
有没有办法强制Python或pip使用pycryptodome而不是pycrypto?
pycrypto ×10
python ×9
cryptography ×3
pycryptodome ×2
rsa ×2
aes ×1
cbc-mode ×1
django ×1
docker ×1
dockerfile ×1
encryption ×1
java ×1
node.js ×1
php ×1
php-openssl ×1
pkcs#7 ×1
python-3.7 ×1
python-3.x ×1
splunk ×1
ssh-keys ×1