Node.js 在nodejs中创建RSA令牌
我正在尝试使用加密对RESTAPI进行身份验证 首先,我需要调用API来获取Node.js 在nodejs中创建RSA令牌,node.js,encryption,cryptography,Node.js,Encryption,Cryptography,我正在尝试使用加密对RESTAPI进行身份验证 首先,我需要调用API来获取加密密钥和时间戳。 encryptionKey是Base 64格式 然后我需要使用密钥创建一个RSAToken,最后使用password+“|”+timestamp对密码进行加密 这是一些使用python对API进行身份验证的示例代码 key, timestamp = get_encryption_key() decoded_key = key.decode('base64') rsa_key = RSA.importK
加密密钥
和时间戳
。
encryptionKey是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]
及
在节点下是否有实现此目的的提示?您可以使用它来加密密码。注意填充
,您可能希望使用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}`));
查看本文,了解更多不同填充的示例。我认为您需要详细介绍一下API的工作原理。你说你需要一个“令牌”。这到底是什么?如果API确实是基于RSA的,那么可能需要在RSA公钥下加密密码和提供的时间戳。然而,在您的代码中,您创建了一个AES密码…@Arnomitelbach不幸的是,API文档中没有任何其他信息。我添加了一些我发现的示例代码,但它是用python编写的。我猜这个令牌是RSA密钥?我不知道这一切是如何运作的,但我会试着四处看看,从不使用教科书RSA。它是不安全的,允许许多不同的攻击。您应该使用带有填充的RSA,例如OAEP。
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}`));