Python 中的 nodejs crypto crypto.createSign 等价物
Equivalent of nodejs crypto crypto.createSign in Python
我想得到与 Python 相同的结果。
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
中做了什么
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))
不知从何说起。加密文档很短。如何在加密中使用密码?
NodeJS代码使用PKCS#1 v1.5 padding,Python代码使用OAEPadding。要在 Python 中也应用 PKCS#1 v1.5,请按如下方式更改填充:
signature = private_key.sign(
data=plain_text,
padding=PKCS1v15(), # Fix: Apply PKCS#1 v1.5
algorithm=hashes.SHA256()
)
我想得到与 Python 相同的结果。
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
中做了什么 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))
不知从何说起。加密文档很短。如何在加密中使用密码?
NodeJS代码使用PKCS#1 v1.5 padding,Python代码使用OAEPadding。要在 Python 中也应用 PKCS#1 v1.5,请按如下方式更改填充:
signature = private_key.sign(
data=plain_text,
padding=PKCS1v15(), # Fix: Apply PKCS#1 v1.5
algorithm=hashes.SHA256()
)