为什么本站的ECC-DH对称密钥与OpenSSL不一样

2023-12-11

我在用(本网站的)Javascript 库和 OpenSSL Ruby 用于计算椭圆曲线 Diffie Hellman 的对称密钥。

然而,从我的结果来看,OpenSSL Ruby 仅生成了一个密钥,这与网站上具有 X 和 Y 对称密钥的密钥不同。我很困惑,因为我的 OpenSSL 对称密钥与网站上的 x 和 y 之一都不匹配。

我使用的对称(共享秘密)密钥secp224r1 curve:

Ruby OpenSSL

   13506351678569412185536677668115375188438201041599149052762191980775

使用站点的 JS 库

x: 26210366144026557327555572210249241206666031403062020900473236895358
y: 19676808255388748321882118528911150828003358302170965920476006073155

我的问题是:

1)为什么OpenSSL Ruby只产生一个密钥,而该大小产生两个密钥:x和y(因为我假设x和y不会彼此连接,因为与Ruby对称相比,位大小太长钥匙)

2)有没有一种方法可以相互转换两个对称密钥(上面的OpenSSL和JSBN-EC库)?我所有的转换尝试都失败了。

我已经为使用 JSBN-EC 库实现 Ruby OpenSSL 奋斗了一个星期了。我也尝试过(SJCL图书馆)但结果相似(对称密钥不匹配)。请帮忙。


我现在已经成功地在客户端(JSBN-EC)和服务器 OpenSSL Ruby 上使用工作对称密钥来解决这个问题

我发现我的问题其实出在代码本身。修复后,我最终在 OpenSSL Ruby 上得到了一个对称密钥,如下所示:

#Ruby: OpenSSL
...
...
symm_key = ec.dh_compute_key(point)
symm_key.unpack('B*').first.to_i(2) #Converts to binary, then to integer
#--> 6922380353406615622038660570577625762884344085425862813095878420328

在客户端使用 JSBN-EC

#Javascript: JSBN-EC
...
...
var curve = get_curve();
var P = new ECPointFp(curve,
curve.fromBigInteger(server_pub_key_x),
curve.fromBigInteger(server_pub_key_y));
var a = client_priv_key;
var S = P.multiply(a);

console.log('SYMM_KEY X: '+S.getX().toBigInteger().toString());
//--> 6922380353406615622038660570577625762884344085425862813095878420328
console.log('SYMM_KEY Y: '+S.getY().toBigInteger().toString());
//--> 14426877769799867628378883482085635535383864283889042780773103726343

因此从表面上看,与 Ruby OpenSSL 值匹配的对称密钥是 JSBN-EC 对称密钥的 X 值

6922380353406615622038660570577625762884344085425862813095878420328
==
6922380353406615622038660570577625762884344085425862813095878420328

我不知道现在的Y值是多少。看来我不需要它了。干杯! :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么本站的ECC-DH对称密钥与OpenSSL不一样 的相关文章

  • 使用 AJAX 来回发送信息

    使用 post 你可以向服务器发送信息 但是当你需要从服务器接收信息时怎么办呢 信息如何从可以由 php 变量保存的方式变为可以由 javascript 变量保存的方式 反之亦然 这与您的问题更相关 http docs jquery com
  • 从 HTML 表单发送数据到 Node.js 服务器

    我正在学习 Node js 我的服务器中有这个 var http require http var url require url http createServer function request response response w
  • 如何使用nodeJS SFTP客户端列出所有子目录?

    有趣的节点 JS ssh2 sftp client 我想列出给定路径中的所有目录及其子目录 let sftp new ssh2SftpClient console log sftp sftp connect host xx xxx xxx
  • angularjs 自定义过滤器检查数据数组内的值

    我有两个过滤器 它们根据数据中的队列键过滤数据 这是我的代码 var app angular module app app controller mainController function scope Data object scope
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • Vue js按钮冻结dom

    我试图在按下按钮时切换包含加载动画的跨度 直到使用 v if 函数完成 但是当我按下按钮时 DOM 冻结并且 span 元素保持不变 直到函数调用结束 如何让 DOM 不冻结并显示加载图标 非阻塞按钮按下可能是一个解决方案 HTML
  • Angular 7 Guard 重定向仅适用于双击

    问题是我已经实现了一个 Guard 旨在处理特定的目录 如果当前用户名的角色等于 2 它应该返回 true 如果没有 那么它不应该重定向 这是我的 app routing module ts 文件 问题出在 userlist 路径中 我们是
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • Javascript 访问 Disqus 评论文本框?

    我正在开发一个浏览器扩展 它应该允许我访问文本框中的评论 帖子 现在很多网站都使用 Disqus 作为评论方式 但在输入文本时我无法找到访问 Disqus 评论框的方法 Disqus API 也没有透露太多信息 有人知道访问它的方法吗 解决
  • 如何混淆或使 JavaScript 文件不可读?

    我的应用程序中有 JavaScript 脚本 其中包含 JavaScript 和 jQuery 函数 所有用户与我的应用程序的交互都是动态的 并且通过 jQuery 传递到应用程序 我意识到 当我在客户端运行我的应用程序时 客户端可以通过查
  • Flot 0.8.2 折线图 - 颜色错误

    我正在使用 Flot 折线图并设置它们的颜色 我发现了一个奇怪的错误 在前 3 种颜色之后 绘图对所有其他线条使用最后一种颜色 这不是正确的行为 更有趣的是图例显示了正确的颜色 这是一个已知的错误 var dataSet label d1
  • Niceedit本地上传图片失败

    我是这样称呼编辑的 new nicEditor buttonList bold italic underline upload iconsPath img nicedit png uploadURI http server com inte
  • Node.js - Async.js:并行执行如何工作?

    我想知道 async js 中并行执行是如何工作的 async require async async parallel function callback for var i 0 i lt 1000000000 i Do nothing
  • 如何让无限滚动发挥作用?

    我正在尝试让这个无限加载脚本在我的项目中工作 这是我的 HTML div div div class pagina div div class pagina div div class pagina div div class pagina
  • 如何在 Astro 中的组件之间共享状态?

    我相信我在代码中采用了错误的方法 如何在按钮单击中设置客户端首选项 该按钮单击用作全局 astro 组件中的道具 或者我应该怎么做 我知道这是可能的 因为 astro js 本身在他们的文档网站中这样做了 下面是我的尝试的解释 我目前正在开
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • ES6解构对象赋值函数参数默认值

    您好 我正在查看在传递函数参数时使用对象解构的示例对象解构演示 https developer mozilla org en US docs Web JavaScript Reference Operators Destructuring

随机推荐

  • `(Integer a) => a -> Bool` 和 `Integer -> Bool` 之间的区别?

    今天我用 Haskell 写了第一个程序 编译并运行成功 而且由于它不是典型的 你好世界 程序 它实际上做的远不止这些 所以请祝贺我 D 不管怎样 我对我的代码和 Haskell 中的语法没有什么疑问 Problem 我的程序读取一个整数N
  • 使用 Java 创建 Snake

    我决定使用 Java 重新创建 Snake 但我有点卡住了 目前 我有一个正方形 用户可以使用箭头键在屏幕上移动 当您按一次向左键时 方块开始使用计时器向左移动 您不需要按住该键或一直按住它 当您按下任何其他设置的键 右 上 下 时 它会改
  • 如何在 onitemclick 上的 webview 中加载 HTML 文件

    我有超过 100 个 html 文件 我希望每个文件在列表视图中单击行时打开 并且每个 html 文件应在 web 视图中打开 我尝试了此代码 但这不起作用 只有 web 视图在行单击时打开 html 文件没有出现 package com
  • Bootstrap 3 - 移动设备上的桌面视图

    在移动设备上时是否可以将引导网站显示为桌面版本 基本上 该页面将显示 992px 或 1200px 视口 而不是小型设备视口 例如 BBC允许您使用页面底部的链接在移动网站和桌面网站之间切换 这就是我想要做的 谢谢 利亚姆 您只需要设置视口
  • WooCommerce 中特定产品变体的自定义后缀

    我正在尝试为可变商品的价格添加后缀 它只需要在选择该特定项目时显示 我尝试了 stackoverflow 中的一些不同代码 但所有代码都将后缀添加到所有变量 而不仅仅是我需要的变量 目前我正在使用以下代码 但它给出了一个严重错误 致命错误
  • C# 和正则表达式 - 无法识别的分组构造

    目前正在研究客户端 服务器应用程序的论文 如果服务器接收到这样的信息 我遇到了一个障碍 ProToCooL unknown DESKTOP 29COFES 10 20 9 53 Hewlett Packard 179C PCWJA001X3
  • 匹配带有空格的不区分大小写的精确短语

    如果我有一个字符串 Hello I went to the store today 我有一系列比赛 perfectMatches array i went store today 它应该与这两者相匹配 数组可能会变得很大 所以我更愿意在 1
  • 如何在java中执行1个命令x次

    我想问一下如何多次执行1个命令 例如这段代码 System out println Hello World 我想运行 500 次 我该怎么做 谢谢 问候 威廉姆斯 使用 Java 8 Streams 你可以这样做 IntStream ran
  • 在 Objective-C 中将 NSArray 转换为 NSString

    我想知道如何转换NSArray Apple Pear 323 Orange 到一个字符串Objective C NSString result array valueForKey description componentsJoinedBy
  • Task == 是懒惰的吗?

    public Data GetCurrent Credentials credentials var data new Lazy
  • 无法领取 PosPrinter

    我有一台 TM T20 Epson 我正在使用此代码尝试打印 Hello Printer 消息 并且我不断跟踪 PosPrinter 的一些特性 public void ImprintHelloPrinter The Explorer Po
  • 从 ViewModel 打开一个窗口

    我试图使我的 WPF 应用程序解耦 因此我做了类似的事情 视图的项目 ViewModel 的项目 In the mainwindow我在按钮和按钮之间进行了绑定OpenChildWindowCommand它位于 ViewModel DLL
  • PHP如何执行命令

    我正在尝试使用 LibreOffice 将电子表格转换为另一种格式 当我从控制台执行命令时 它工作正常 但当我使用 exec 或 system 从 PHP 执行命令时 它不起作用 它没有显示任何错误或任何东西 它只是默默地失败 如果我尝试执
  • 如何公开用户控件内的 GridView 控件的列集合

    请参阅编辑 我希望能够在使用用户控件的 aspx 中执行此操作
  • NetSuite 保存搜索公式以将其他两列的结果相乘

    我当前有一个保存的搜索 用于填充项目列表 我当前的结果是标准 NetSuite 字段 即 名称 描述 类型 平均成本 和 可用 我正在尝试为公式添加另一列 该公式将平均成本乘以可用成本 得出可用 SOH 的值 在保存的搜索结果中添加一个新的
  • 使用 SwiftUI 显示多个 VNRecognizedObjectObservation 边界框时偏移错误

    我正在使用 Vision 来检测物体 然后得到 VNRecognizedObjectObservation 我在显示标准化矩形之前对其进行转换 let transform CGAffineTransform scaleX 1 y 1 tra
  • MaltParser 在 Python NLTK 中不工作

    我无法让 Maltparser 与 Python NLTK 一起使用 到目前为止 这是我的代码 import nltk os environ MALT PARSER C Python34 maltparser 1 8 1 os enviro
  • 适用于 Android 的 Firebase Admin SDK,未找到方法

    我正在构建一个由 Firebase 应用程序支持的 Android 应用程序 并且我希望能够创建一个可以编辑或删除其他用户帐户的管理员帐户 如果我理解正确 Firebase Admin SDK 应该允许我执行此操作 所以我按照说明进行操作h
  • 安装 IntelliJ IDEA 后从控制台运行简单的 hello world

    我在Mac上安装了IntelliJ IDEA并编写了最简单的Kotlin程序 fun main args Array
  • 为什么本站的ECC-DH对称密钥与OpenSSL不一样

    我在用 本网站的 Javascript 库和 OpenSSL Ruby 用于计算椭圆曲线 Diffie Hellman 的对称密钥 然而 从我的结果来看 OpenSSL Ruby 仅生成了一个密钥 这与网站上具有 X 和 Y 对称密钥的密钥