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

时间:2016-11-09 08:54:07

标签: javascript c# node.js webcryptoapi

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

沟通渠道如下:

浏览器< - > 节点< - >的 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曲线。是否有一些在这些平台之间进行密钥交换的常用方法?

1 个答案:

答案 0 :(得分:0)

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

例如,您可以查看this link。还有一个"现场示例"相同代码here。请注意,目前PKI.js是唯一使用WebCrypto并具有CMS加密所需的全部库。

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

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