c#中使用椭圆曲线加密(P521曲线)的公钥blob长度
本文关键字:曲线 P521 公钥 长度 blob 加密 | 更新日期: 2023-09-27 18:17:23
我正在实现客户机和服务器之间的密钥交换机制。客户端是用c#编写的,服务器是用Java编写的。
在客户机上,我使用以下代码生成我的公钥aliceKey = CngKey.Create(CngAlgorithm.ECDiffieHellmanP521);
alicePubKeyBlob = aliceKey.Export(CngKeyBlobFormat.EccPublicBlob);
alicePubKeyBlob
的大小为140字节。但是在服务器端,P-521curve
的密钥大小为66字节(使用弹性城堡)
如果我尝试在客户端导入服务器密钥,我得到一个异常的消息"Parameter is incorrect"
我错过了什么吗?
我找到问题了。
参考:http://msdn.microsoft.com/en-us/library/windows/desktop/aa375520 (v = vs.85) . aspx
140字节是由于以下格式的公钥。4字节:ECDHPublicP521 = 0x354B4345的幻数4字节:对于X和Y长度= 42 00 00 00(42 = 66字节长度)接下来的66个字节是X接下来的66个字节是y
服务器生成X &Y每个66字节。如果长度小于66字节,则确保为X & & Y添加0x00的填充。