在nodejs中创建RSA令牌



我正在尝试使用加密对REST API进行身份验证。

首先,我需要调用 API 来获取encryptionKeytimestamp加密密钥采用 Base 64 格式。

然后我需要使用密钥创建一个RSAToken,并使用 password + "|" + timestamp 最终加密密码。

这是一些使用 python 向 API 进行身份验证的示例代码

key, timestamp = get_encryption_key()
decoded_key = key.decode('base64')
rsa_key = RSA.importKey(decoded_key)
encrypted = rsa_key.encrypt(password + '|' + str(timestamp), 'x')
encrypted_password = encrypted[0]

import base64
from Crypto.PublicKey import RSA
r = requests.get(my_url, headers=headers)
myData = r.json()
decoded = base64.b64decode(myData['encryptionKey'])
key = RSA.importKey(decoded)
enc = key.encrypt(password + '|' + str(myData['timeStamp']), 'x')
encryptedPassword = enc[0]
session = "/session"
my_url = url + session
payload = {"identifier": identifier,
"password": encryptedPassword,
"encryptedPassword": "True"
}

在 Node 下实现这一目标有什么提示吗?

您可以使用

crypto.publicEncrypt来加密密码。请注意padding,您可能希望使用 Python 脚本中使用的正确填充。

const crypto = require('crypto');
const constants = require('constants');
const decodedKey = Buffer(encriptionKey, 'base64').toString();
const encryptedPassword = crypto.publicEncrypt({
    key: decodedKey,
    padding : constants.RSA_PKCS1_OAEP_PADDING
} , Buffer(`${password}|${timestamp}`));

查看此节点.js测试以查找更多不同填充的示例。

最新更新