标签: pycrypto

Python:使用.Cer文件打开获取公钥然后进行验证

我有一个包含公钥的 .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)

python cryptography pycrypto

3
推荐指数
1
解决办法
1万
查看次数

使用node.js加密加密aes256并使用python2.7 PyCrypto解密

我正在尝试使用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)

python cryptography pycrypto node.js

3
推荐指数
1
解决办法
1460
查看次数

导入错误:Mac上没有名为'Crypto'的模块(Pycrypto是最新的)

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)

python django pycrypto

3
推荐指数
1
解决办法
4229
查看次数

使用 Python 从私钥输入中提取公钥

我需要从没有临时位置的本地私钥生成公钥,就像我们在 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脚本时传递如上所示的键值,并从中生成公钥。是否可能??,我不需要在本地存储,因为为了特权和关键证券,不想破解。

python rsa ssh-keys pycrypto twisted.conch

3
推荐指数
1
解决办法
1万
查看次数

Python 3 中使用 PKCS#7 填充的 AES-CBC 128、192 和 256 加密解密

我在 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 aes pycrypto cbc-mode pkcs#7

3
推荐指数
1
解决办法
1万
查看次数

Pycrypto RSA PKCS1 OAEP SHA256 与 Java 的互操作性

我在 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)

python java rsa pycrypto pycryptodome

3
推荐指数
1
解决办法
3330
查看次数

在 Windows 10 x64 和 Python 3.6.5 中安装 pycrypto:失败,错误代码 1 在 C:\Users\x\AppData\Local\Temp\pip-install-u7xhxrk \pycrypto\

我需要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 页面 …

python cryptography pycrypto

3
推荐指数
1
解决办法
4097
查看次数

用 PHP 加密文本并用 Python 解密

我正在使用以下代码片段来加密文本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 代码,以便它生成“填充”密码,任何线索?

php python encryption pycrypto php-openssl

3
推荐指数
1
解决办法
1989
查看次数

如何让 Pycrypto 在 Docker 上正常工作?

我正在AWS lambda 上使用Pychromeless 存储库并取得成功。

\n\n

但现在我需要使用 pycrypto 依赖项,但我得到了

\n\n

configure: error: no acceptable C compiler found in $PATH\n\xc2\xa0\n运行时make docker-build\n(放入文件后pycrypto==2.6.1requirements.txt

\n\n

这个线程,有人提到了同样的问题:\n\xc2\xa0

\n\n

“gcc 编译器不在您的 $PATH 中。这意味着您没有安装 gcc,或者它不在您的 $PATH 变量中”。

\n\n

所以尝试放置apt-get install build-essential在 Dockerfile 中,但我得到了

\n\n

/bin/sh: apt-get: command not found

\n\n

然后,我尝试使用\xc2\xa0yum install gcc

\n\n

只为得到

\n\n

The command \'/bin/sh -c yum install gcc\' returned a non-zero code: 1

\n\n

Docker-lambda [信息页面](https://hub.docker.com/r/lambci/lambda/)说:

\n\n
This …
Run Code Online (Sandbox Code Playgroud)

pycrypto python-3.x docker dockerfile

3
推荐指数
1
解决办法
1652
查看次数

如何在 Windows 上为 Python 3.7 安装 Splunklib?

Splunklib因为Python 3.7无法在我的 Windows 机器上安装。由于pycrypto未移植到Python 3,我已将其卸载并安装pycrypodome为替代品。不幸的是,在尝试安装时splunklibpip仍会尝试安装pycrypto.

*Installing collected packages: pycrypto, splunklib
Running setup.py install for pycrypto ... *
Run Code Online (Sandbox Code Playgroud)

有没有办法强制Pythonpip使用pycryptodome而不是pycrypto

python splunk pycrypto python-3.7 pycryptodome

3
推荐指数
1
解决办法
3133
查看次数