在nodejs中创buildRSA令牌

我正在尝试使用encryption对REST API进行身份validation。

首先,我需要调用API来获得一个encryptionKey和一个timestampencryptionKey采用Base 64格式。

然后我需要使用密钥创build一个RSAToken ,并使用password + "|" + timestamp最后encryption密码 password + "|" + timestamp

这是一些使用pythonvalidationAPI的示例代码

 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.publicEncryptencryption您的密码。 注意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}`)); 

看看这个node.jstesting来找出更多不同的填充的例子。