Python RSA使用NONEWithRSA对字符串进行签名

2024-09-29 22:35:16 发布

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

我正在从事一个项目,在这个项目中,客户端代码是用Java编写的,他们使用NONEWithRSA算法对字符串进行签名和验证。你知道吗

我正在使用PyCryptodome为给定的字符串生成符号。https://pycryptodome.readthedocs.io/en/latest/src/signature/pkcs1_v1_5.html

但是我没有发现它使用NONEWithRSA算法,所以它给出的签名与我的客户机在服务器上期望的不同。你知道吗

python上的库支持这个算法吗?你知道吗


Tags: 项目字符串代码httpsio算法客户端readthedocs
1条回答
网友
1楼 · 发布于 2024-09-29 22:35:16

是的,您可以将库cryptographyPrehashed一起使用。你知道吗

这将假设您的数据已经是散列的输出(因此不会添加额外的散列):

import hashlib
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, rsa, utils

private_key = rsa.generate_private_key(
    public_exponent = 65537,
    key_size = 2048,
    backend = default_backend()
)
public_key = private_key.public_key()

# Compute the hash here
prehashed_msg = hashlib.sha256(b"A message I want to sign").digest()

# Sign the hash (do not perform any hashing)
signature = private_key.sign(
    prehashed_msg,
    padding.PSS(
        mgf = padding.MGF1(hashes.SHA256()),
        salt_length = padding.PSS.MAX_LENGTH),
    utils.Prehashed(hashes.SHA256())
)

# Verify
public_key.verify(
    signature,
    prehashed_msg,
    padding.PSS(
        mgf = padding.MGF1(hashes.SHA256()),
        salt_length = padding.PSS.MAX_LENGTH),
    utils.Prehashed(hashes.SHA256())
)

相关问题 更多 >

    热门问题