c# - 如何在 .netcore/Linux 中实现 Diffie Hellman
问题描述
ECDiffieHellmanCng
-> 平台不支持
ECDiffieHellmanOpenSsl
-> PublicKey.ToByteArray()
-> 不支持平台
这是其他人提出的基本相同(未回答)的问题,7 个月前 如何在 Linux 上序列化和反序列化 ECDiffieHellmanOpenSsl 的公钥?
如果有办法驯服提供的课程,我想避免引入第 3 方部门。
解决方案
ECDiffieHellmanCng
Linux 上不支持。
Linux 使用ECDiffieHellmanOpenSsl
,但请注意
涉及的类型不在平台之间转换
您可以找到一些在测试套件中如何使用它的示例,例如
[Fact]
public void VerifyDuplicateKey_ValidHandle()
{
using (var first = new ECDiffieHellmanOpenSsl())
using (SafeEvpPKeyHandle firstHandle = first.DuplicateKeyHandle())
using (ECDiffieHellman second = new ECDiffieHellmanOpenSsl(firstHandle))
using (ECDiffieHellmanPublicKey firstPublic = first.PublicKey)
using (ECDiffieHellmanPublicKey secondPublic = second.PublicKey)
{
byte[] firstSecond = first.DeriveKeyFromHash(secondPublic, HashAlgorithmName.SHA256);
byte[] secondFirst = second.DeriveKeyFromHash(firstPublic, HashAlgorithmName.SHA256);
byte[] firstFirst = first.DeriveKeyFromHash(firstPublic, HashAlgorithmName.SHA256);
Assert.Equal(firstSecond, secondFirst);
Assert.Equal(firstFirst, firstSecond);
}
}
推荐阅读
- flutter - 必须初始化不可为空的实例字段“_localizedStrings”
- c# - 将 JSON 数组反序列化为列表时出错
C# - python - 尝试删除具有相同通道名称的多个文本通道时遇到 RecursionError
- graphql - 我应该只使用一个 API 来获取 GraphQL 中一屏的所有数据吗?
- javascript - 如何在 html 表单动作中添加参数?
- python - Django 如何在基于类的视图中更新对象的布尔值?
- sql - 从左外连接返回逗号分隔列表
- python - 如何访问
用硒标记 - python-3.x - Facebook Graph API 评论缺失来自(发布评论的用户)
- docker - Docker:502/503错误,等待对容器预热请求的响应