关于密码:我正在将Wincrypt用于Diffie-Hellman,可以将共享密钥导出为纯文本格式吗?

关于密码:我正在将Wincrypt用于Diffie-Hellman,可以将共享密钥导出为纯文本格式吗?

I'm using Wincrypt for Diffie-Hellman— can I export the shared secret in plain text?

好的-感谢Mike,我能够让Wincrypt生成Diffie-Hellman密钥对。 我想出了导出公共密钥的方法,以及如何导入另一方的公共密钥的方法。 根据文档,导入另一方的公钥后,已计算出共享密钥。 大。

我现在需要掌握这个共享的秘密,但我认为这是不可能的。 除非我调用CryptSetKeyParam将算法ID从CALG_AGREEDKEY_ANY更改为其他内容,否则简单地调用类型为PLAINTEXTKEYBLOBCryptExportKey失败。 但是我不需要其他东西,我想要共享的秘密。 但是,API似乎旨在阻止这种情况。

有什么想法吗? 我应该注意,这里的问题是我只写了WiFi Protected Setup实施的一侧。 因此,该协议是为我定义的,而另一方没有给我HCRYPTKEY。


这看起来像您所需要的...
来自:http://msdn.microsoft.com/zh-cn/library/aa381969(VS.85).aspx

导入Diffie-Hellman公钥并计算秘密会话密钥

  • 调用CryptAcquireContext函数以获取Microsoft Diffie-Hellman密码提供程序的句柄。
  • 通过调用CryptGenKey函数来创建新密钥,或者通过调用CryptGetUserKey函数来检索现有密钥来创建Diffie-Hellman密钥。
  • 要将Diffie-Hellman公钥导入CSP,请调用CryptImportKey函数,并在pbData参数中传递指向公钥BLOB的指针,在dwDataLen参数中传递BLOB的长度,并传递指向hPubKey参数中的Diffie-Hellman键。这将导致执行(Y^X) mod P计算,从而创建共享的秘密密钥并完成密钥交换。此函数调用返回hKey参数中新的秘密会话密钥的句柄。
  • 此时,导入的Diffie-Hellman的类型为CALG_AGREEDKEY_ANY。在使用密钥之前,必须将其转换为会话密钥类型。这是通过在dwParam设置为KP_ALGID并将pbData设置为指向表示会话密钥的ALG_ID值的指针(例如CALG_RC4)的指针的情况下调用CryptSetKeyParam函数来实现的。在CryptEncryptCryptDecrypt函数中使用共享密钥之前,必须先转换密钥。在转换密钥类型之前,对这些函数之一的调用将失败。
  • 现在可以将秘密会话密钥用于加密或解密。
  • 当不再需要密钥时,通过调用CryptDestroyKey函数销毁密钥句柄。

  • 推荐阅读

      linux密码更改命令?

      linux密码更改命令?,密码,系统,名称,信息,环境,命令,使用者,用户,权限,终端,L

      linux常用命令文本?

      linux常用命令文本?,工作,命令,网络,地址,系统,管理,标准,信息,目录,文件,Lin

      linux创建密码命令?

      linux创建密码命令?,密码,系统,地址,联系方式,软件,用户,用户名,位置,管理,

      linux命令设置密码?

      linux命令设置密码?,密码,系统,服务,软件,地址,电脑,流程,管理,用户,命令,问

      linux命令行密码联网?

      linux命令行密码联网?,密码,网络,系统,管理,地址,网址,数据,工具,环境,基础,

      linux密码长度命令?

      linux密码长度命令?,密码,数字,周期,信息,定期,代码,策略,时间,管理,大写字

      linux文本查询命令?

      linux文本查询命令?,标准,命令,文件,工具,数据,信息,位置,系统,内容,文本,Lin

      linux在线命令文本?

      linux在线命令文本?,系统,工作,信息,在线,地址,命令,基础,标准,工具,目录,Lin

      linux编写文本命令?

      linux编写文本命令?,工作,系统,命令,第一,信息,发行,代码,名字,文件,终端,lin

      linux命令行界面密码?

      linux命令行界面密码?,密码,系统,管理,状态,代码,软件,地址,信息,标的,用户,

      linux压缩文本的命令?

      linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,

      linux压缩文本的命令?

      linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,

      linux输入文本命令?

      linux输入文本命令?,系统,位置,电脑,工作,首开,命令,终端,模式,指令,字符,如

      linux清除密码命令?

      linux清除密码命令?,密码,系统,状态,名称,位置,网络,管理,软件,工具,命令,lin

      linux锁屏密码命令?

      linux锁屏密码命令?,密码,系统,环境,图片,管理,信息,状态,名称,命令,用户,lin

      linux替换文本命令?

      linux替换文本命令?,信息,系统,命令,内容,文件,文本,字符串,字符集,单词,字

      linux打命令输入密码?

      linux打命令输入密码?,密码,系统,状态,代码,管理,标的,位置,地址,名称,命令,L

      linux替换文本的命令?

      linux替换文本的命令?,系统,地址,工作,信息,命令,标准,数据,内容,文件,字符

      linux免密钥登录命令?

      linux免密钥登录命令?,密码,数据,流程,服务,标准,网络,网上,认证,证书,代码,L

      linux命令行更新密码?

      linux命令行更新密码?,密码,系统,名称,软件,信息,环境,命令,使用者,权限,用