我可以在NodeJS, CSharp和WebCrypto之间使用DH/ECDH方法吗?

本文关键字:DH ECDH 方法 之间 NodeJS CSharp WebCrypto 我可以 | 更新日期: 2023-09-27 18:17:08

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

通信线路如下:

浏览器

& lt;——> 节点 & lt;——> CSharp

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

我需要找到一种执行某种密钥交换的方法,如ECDH,在大多数浏览器中工作(可以是浏览器化的节点代码),并在NodeJS方面有一个兼容的实现。我需要找到另一种方法在NodeJS和c#之间做同样的事情。

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

我可以在NodeJS, CSharp和WebCrypto之间使用DH/ECDH方法吗?

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

作为示例,您可以查看此链接。这里还有一个相同代码的"实际示例"。请注意,目前PKI.js是唯一与WebCrypto一起工作的库,并且具有CMS加密所需的所有必要条件。

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

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