首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中nodejs crypto crypto.createSign的等价物

Python中nodejs crypto crypto.createSign的等价物
EN

Stack Overflow用户
提问于 2021-08-20 11:16:45
回答 1查看 107关注 0票数 1

我想用Python得到同样的结果。

代码语言:javascript
复制
function generateSignature(baseString, privateKey, clientSecret) {
  var signWith = {
    key: (privateKey)
  }; // Provides private key

  if (!_.isUndefined(clientSecret) && !_.isEmpty(clientSecret)) _.set(signWith, "passphrase", clientSecret);

  // Load pem file containing the x509 cert & private key & sign the base string with it to produce the Digital Signature
  var signature = crypto.createSign('RSA-SHA256')
    .update(baseString)
    .sign(signWith, 'base64');

  return signature;
}

我在Python中做了什么

代码语言:javascript
复制
    import base64
    from cryptography.hazmat.primitives.asymmetric import dsa, rsa
    from cryptography.hazmat.primitives.serialization import load_pem_private_key
    private_key = load_pem_private_key(
        str.encode(str_private_key),
        password=None)

    plain_text = b'abc'
    signature = private_key.sign(
        data=plain_text,
        padding=padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        algorithm=hashes.SHA256()

    )

    print(base64.b64encode(signature))

我不知道从何说起。加密文档非常简短。密码如何在加密中使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 11:50:43

NodeJS代码使用PythonV1.5填充,即PKCS#1代码OAEPadding。要在PKCS#1中也应用Python1.5版,请按如下所示更改填充:

代码语言:javascript
复制
signature = private_key.sign(
    data=plain_text,
    padding=PKCS1v15(),         # Fix: Apply PKCS#1 v1.5
    algorithm=hashes.SHA256()
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68861345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档