Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在nodejs中创建RSA令牌_Node.js_Encryption_Cryptography - Fatal编程技术网

Node.js 在nodejs中创建RSA令牌

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

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

首先,我需要调用API来获取
加密密钥
时间戳
。 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}`));