javascript - 未捕获的 SodiumException:标量和点必须是 SODIUM_CRYPTO_SCALARMULT_SCALARBYTES
问题描述
我正在尝试用 PHP 和 Javascript 实现 ECC 算法(x25519)。
我在 PHP中使用钠,在 javascript 中使用加密,我对密码学有点陌生,这是关于我三天搜索和尝试库的事情。sodium_crypto_scalarmult函数抛出此错误。
Fatal error: Uncaught SodiumException: scalar and point must be SODIUM_CRYPTO_SCALARMULT_SCALARBYTES byte
NodeJS/Javascript 代码
const { generateKeyPairSync } = require('crypto');
const { publicKey, privateKey } = generateKeyPairSync('x25519', {
publicKeyEncoding: {
type: 'spki',
format: 'der'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'der'
}
});
console.log("Public Key is: ", publicKey)
console.log("The public key value in base64 is: ", publicKey.toString('base64') );
因为我现在只是在实现它之前进行测试,所以我只是将 base64 公钥结果从 javascript 复制并粘贴到 PHP。
PHP
$publicKeyfromJavascript = "";
$bob = sodium_crypto_box_keypair();
$bobPB = sodium_crypto_box_publickey($bob);
$bobsharedKey = sodium_crypto_scalarmult(sodium_crypto_box_secretkey($bob), $publicKeyfromJavascript);
解决方案
推荐阅读
- c++ - 不能包含“vcruntime_new_debug.h”
- reactjs - 变量声明在反应渲染函数中的 eval 中不起作用
- safari - 在 IOS 移动 safari 浏览器弹出窗口中未显示在隐身模式下
- c# - 检查列表中是否存在特定的字符串或字符串部分
- python-3.x - 训练后量化 TensorFlow Lite 模型的输出
- javascript - 将 v-model 值从一个组件传递到模板
- django - 带有 Fieldset 的 Django Crispy Forms CustomLayout
- javascript - 模态未选择当前对象
- java - 我正在制作一个应该读取 PDF 文件的应用程序,但 PDF 的路径总是出错
- python - python 应用程序的动态配置刷新