node.js - Node.JS crypto.ECDH.computeSecret() 总是抛出错误
问题描述
我创建了一个测试程序来测试 Node.JS 文档中的 ECDH 算法。我修改了代码以与我的远程应用程序一起使用,代码如下所示:
//Source
var crypto = require('crypto');
var fs = require('fs');
var ecdh = crypto.createECDH('secp521r1');
fs.writeFileSync('./key',ecdh.generateKeys().toString('base64'));
//Remote
var crypto = require('crypto');
var fs = require('fs');
var ecdh = crypto.createECDH('secp521r1');
ecdh.generateKeys();
var key = Buffer.from(fs.readFileSync('./key'), 'base64');
var secret = ecdh.computeSecret(key, 'base64');
console.log(secret);
但是,每次我ECDH.computeSecret()
从远程脚本运行时,它总是会抛出一个错误。我已经尝试寻找解决方案,但无处可寻。
解决方案
我终于发现了一个问题,只是因为我在将密钥保存到磁盘时忘记指定编码。在网络上,应该是一样的。
//source
var crypto = require('crypto');
var fs = require('fs');
var ecdh = crypto.createECDH('secp521r1');
fs.writeFileSync('./key', ecdh.generateKeys().toString('base64'), {encoding: 'utf-8'}); //added encoding
//Remote
var crypto = require('crypto');
var fs = require('fs');
var ecdh = crypto.createECDH('secp521r1');
ecdh.generateKeys();
var key = Buffer.from(fs.readFileSync('./key', {encoding: 'utf-8'}), 'base64');//added encoding
var secret = ecdh.computeSecret(key);
console.log(secret)
推荐阅读
- python - 无法弄清楚如何对列表进行交互作为 if 语句的比较
- azure-data-factory - 如何将数据从 csv 复制到 Azure SQL Server 表?
- javascript - 仅打印没有分页或任何其他内容的 ag-grid 数据的有效方法
- parsing - 以下标记定义永远无法匹配,因为先前的标记匹配相同的输入:INT,STRING
- asp.net-web-api - 从 asp.net webAPI 返回带有非拉丁字符的文件
- angular - 如何以角度调试测试?
- sql - Postgres SQL 如何在 SQL 数据库上透视表
- android - IONIC http.get 挂在模拟器或设备上,但在浏览器上工作
- flutter - firebase_crashlytics 在颤振中使用 try / catch 时是否有效?
- angularjs - 错误 Webpack: Uncaught ReferenceError: require is not defined