1

我正在浏览器扩展、NodeJS 应用程序(服务器)和 C# 应用程序之间建立通信线路。我需要使用 Diffie-Hellman 或 ECDH 之类的方法在每个实例之间交换密钥,以便开始加密敏感数据。

通讯线路如下:

浏览器<-->节点<--> CSharp

浏览器只需要与 Node 通信,CSharp 应用程序也只需要与 Node 通信

我需要找到一种方法来执行某种密钥交换,例如 ECDH,它适用于大多数浏览器(可以是浏览器化的 Node 代码),并且在 NodeJS 端具有兼容的实现。我需要找到另一种方法在 NodeJS 和 C# 之间做同样的事情。

我可以看到 C# 中有很多使用 ECDH 的示例(例如:https ://blogs.msdn.microsoft.com/shawnfa/2007/01/22/elliptic-curve-diffie-hellman/ ),但我可以没有看到像 Node.js 那样提到 ECDH 曲线。这些平台之间是否有一些通用的方式来执行密钥交换?

4

1 回答 1

0

事实上,WebCrypto 不支持 DH - 它被排除在最新版本的标准之外。因此,唯一的选择是 ECDH。

作为示例,您可以检查此链接这里还有一个相同代码的“现场示例” 。请注意,目前 PKI.js 是唯一使用 WebCrypto 并具有 CMS 加密所需的所有库的库。

至于 Node.js - 你可以使用相同的 PKI.js 库和任何 WebCrypto“shim”或“polifill”。

至于 C# - Microsoft Crypto API 支持 ECDH(实际上支持是通过 CNG,但不是那么重要)。

于 2016-11-10T06:52:32.893 回答