标签: pycrypto

python crypto高级包装器

我正在使用PyCrypto(在谷歌应用引擎上)进行AES加密.

PyCrypto给我一个AES的原始接口 - 我需要将我的键和输入填充到16字节倍数.

是否有更高级别的图书馆为我照顾这些东西?

python google-app-engine aes pycrypto

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

RSA-2048 解密不起作用 - PKCS1_OAEP“解密不正确。”

该代码应该建立一个监听来自投票网站的连接的服务。它是一个监听来自外部(客户端)连接的服务器。当客户端连接时,客户端等待发送版本号。一旦我的服务器/侦听器发送版本号,客户端就会使用我提供的公钥进行 RSA 2048 位加密的 256 字节块进行响应。然后必须对该块进行解码,(稍后)我将读取内容。我陷入无法解密的困境:

我明白了:

开始连接...

来自 ('50.28.6.244', 35338) 的连接

正在发送版本号...

接收加密块

回溯(最近一次调用最后一次):

文件“voteListener.py”,第 97 行,位于

主要(私钥)

文件“voteListener.py”,第 49 行,在 Main 中

解码文件=decode_msg(数据,私钥)

文件“voteListener.py”,第 58 行,decode_msg

密文 = cipher.decrypt(msg)

文件“C:\Python27\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py”,第 227 行,解密

引发 ValueError("解密不正确。")

ValueError:解密不正确。

C:\Users\STEXAS\Desktop\vote>暂停

按任意键继续 。。。

我的代码:

import socket
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from os import path


def Main(privatekey):
    host = "0.0.0.0"
    port = 8192
    version = "VOTIFIER 1.9"
    print("starting connection...")
    while True:
        s = socket.socket()
        s.bind((host, port))
        s.listen(1)
        c, addr = …
Run Code Online (Sandbox Code Playgroud)

rsa pycrypto python-2.7

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

使用 AES-256 加密,如 OpenSSL 和 PyCrypto

我正在尝试使用 AES-256 和带有 base64 的 Python 加密时间戳。使用以下命令生成输出的 OpenSSL 等效项:

openssl enc -aes256 -pass pass:'1Lw2*kx18#AvNuij*iRL1nY1UA_#k8$+' -nosalt -base64 <<< "1489355323"
Run Code Online (Sandbox Code Playgroud)

我的python代码如下所示:

import time
from base64 import b64encode
from Crypto.Cipher import AES

key = '1Lw2*kx18#AvNuij*iRL1nY1UA_#k8$+'
timestamp = "1489355323"

BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
iv = "\x00" * 16

aes = AES.new(key, AES.MODE_CBC, iv)
ciphertext = aes.encrypt( pad( timestamp ) )

print b64encode(ciphertext)
Run Code Online (Sandbox Code Playgroud)

目前输出不同,我需要获得与 OpenSSL 命令相同的输出。知道我做错了什么吗?

python encryption cryptography pycrypto

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

ModuleNotFoundError:没有名为“Crypto”的模块,Python 3.9,PyCharm

    from Crypto.Cipher import AES
ModuleNotFoundError: No module named 'Crypto'
Run Code Online (Sandbox Code Playgroud)

我正在使用 PyCharm Community 2020.3 和 Python 3.9。

这个项目之前编译并运行过,但我不得不更换计算机并重新创建我的开发环境,此时,该项目失败了,如上所述。

我重新安装了 pycryptodome (见图),但仍然出现错误。

某些原因导致编译器没有注意到 pycryptodome 的存在。也许还有别的东西让它黯然失色?我需要卸载库“crypto”吗?

在此输入图像描述

在此输入图像描述

python pycrypto pycharm pycryptodome

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

CryptoJS和Pycrypto一起工作

我正在使用CryptoJS(v 2.3)对Web应用程序中的字符串进行加密,并且需要在Python中的服务器上对其进行解密,因此我正在使用PyCrypto。我觉得我缺少了一些东西,因为我无法正常工作。

这是JS:

Crypto.AES.encrypt('1234567890123456', '1234567890123456',
                   {mode: new Crypto.mode.CBC(Crypto.pad.ZeroPadding)})
// output: "wRbCMWcWbDTmgXKCjQ3Pd//aRasZ4mQr57DgTfIvRYE="
Run Code Online (Sandbox Code Playgroud)

python:

from Crypto.Cipher import AES
import base64
decryptor = AES.new('1234567890123456', AES.MODE_CBC)
decryptor.decrypt(base64.b64decode("wRbCMWcWbDTmgXKCjQ3Pd//aRasZ4mQr57DgTfIvRYE="))
# output: '\xd0\xc2\x1ew\xbb\xf1\xf2\x9a\xb9\xb6\xdc\x15l\xe7\xf3\xfa\xed\xe4\xf5j\x826\xde(m\xdf\xdc_\x9e\xd3\xb1'
Run Code Online (Sandbox Code Playgroud)

javascript python encryption pycrypto cryptojs

0
推荐指数
1
解决办法
3043
查看次数

在fedora 15上安装pycrypto-2.3时出错

嗨,我想从这里安装pycrypto-2.3

我下载并运行以下命令

cd pycrypto-2.3/

python setup.py install
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,

running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/Crypto
copying lib/Crypto/pct_warnings.py -> build/lib.linux-x86_64-2.7/Crypto
copying lib/Crypto/__init__.py -> build/lib.linux-x86_64-2.7/Crypto
creating build/lib.linux-x86_64-2.7/Crypto/Hash
copying lib/Crypto/Hash/SHA.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
copying lib/Crypto/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
copying lib/Crypto/Hash/MD5.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
creating build/lib.linux-x86_64-2.7/Crypto/Cipher
copying lib/Crypto/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
creating build/lib.linux-x86_64-2.7/Crypto/Util
copying lib/Crypto/Util/_number_new.py -> build/lib.linux-x86_64-2.7/Crypto/Util
copying lib/Crypto/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Util
copying lib/Crypto/Util/winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/Util
copying lib/Crypto/Util/python_compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-x86_64-2.7/Crypto/Util …
Run Code Online (Sandbox Code Playgroud)

python pycrypto

0
推荐指数
1
解决办法
3675
查看次数

使用相同密钥加密相同字符串的不同加密版本

这简直让我发疯.

这就是发生的事情:

在python shell里面:

>>> from Crypto.Cipher import ARC4
>>> a = ARC4.new('0123456789123456')
>>> b = ARC4.new('0123456789123456')
>>> de = b.decrypt
>>> en = a.encrypt
>>> en('abcd')
'\x18\x07\x8a\xdc'
>>> en('abcd')
'\x89>\xa0T'
>>> en('abcd')
'y\xe1-\xfe'
>>> en('abcd')
'\xc7\xf6\x19\xfc'
>>> 
Run Code Online (Sandbox Code Playgroud)

abcd用相同的密钥加密了4次.四次我得到了不同的加密字符串.

当我做了以下事情时(也许我会在解密所有上述不同的加密消息时获得相同的解密消息).

>>> al  = []
>>> for i in range(10):
    al.append(en('abcd'))


>>> al
['\x81\x05h\x06', '\x11;\x88\xc7', '\xb6\xb9g\x10', '\x1e$\x8c\xca', '\xbdh\xc2\xf0', 'ruiO', '7\xec\x7f\xdf', '\x08\xf3\x90\x8a', '\x1c\x95\xf3(', '\xbd@-\x11']

>>> gl = []
>>> for i in range(10):
    gl.append(de(al[i]))


>>> gl
['\xc8\x0f6\xb7', '\x18y`A', 'tm\x12\t', '\x9c\xf65M', …
Run Code Online (Sandbox Code Playgroud)

python pycrypto

0
推荐指数
1
解决办法
148
查看次数

RSA使用python从数据生成私钥

我有一个 base64 密码消息和一个带有公钥信息的 pubkey.pem。因此,由于密钥很小(576),我已经恢复了重建私钥所需的所有信息:p、q 和 d。

现在我想破译该消息,但我不知道该怎么做。事实上,如果我想使用解密函数,我需要一个 priv_key 对象,但我不知道如何从 (n,e,d) 生成它

from Crypto.PublicKey import RSA
from base64 import b64decode

#message I want to decipher
msg="e8oQDihsmkvjT3sZe+EE8lwNvBEsFegYF6+OOFOiR6gMtMZxxba/bIgLUD8pV3yEf0gOOfHuB5bC3vQmo7bE4PcIKfpFGZBA"

pub_key64 = 'MGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMMvWUpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQowIDAQAB'

pub_keyDER = b64decode(pub_key64)
pub_key_obj = RSA.importKey(pub_keyDER)   #my weak public key
...   # how to generate priv_key_obj ???
dsmg=priv_key_obj.decrypt(msg)
Run Code Online (Sandbox Code Playgroud)

python rsa pycrypto python-2.7

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

ValueError:AES密钥必须为16、24或32个字节长PyCrypto 2.7a1

我正在为我的学校项目编程,上面有一个问题。这是我的代码:

def aes():
    #aes
    os.system('cls')
    print('1. Encrypt')
    print('2. Decrypt')

    c = input('Your choice:')

    if int(c) == 1:
        #cipher
        os.system('cls')
        print("Let's encrypt, alright")
        print('Input a text to be encrypted')
        text = input()

        f = open('plaintext.txt', 'w')
        f.write(text)
        f.close()

        BLOCK_SIZE = 32
        PADDING = '{'
        pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
        EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
        secret = os.urandom(BLOCK_SIZE)

        f = open('aeskey.txt', 'w')
        f.write(str(secret))
        f.close()

        f = open('plaintext.txt', 'r')
        privateInfo = f.read()
        f.close()

        cipher …
Run Code Online (Sandbox Code Playgroud)

python cryptography pycrypto python-3.x

-1
推荐指数
1
解决办法
6813
查看次数