2010-02-19 40 views
0

在很短的问题:我如何填写RSAParameters如果我从第三方?:具有下列输入.net中RSA公钥模数和指数的格式是什么?

模量:123456

Exponet:111

在一个漫长的故事,我使用以下代码:

RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(2048);

RSAParameters rsaPublic = RSAalg.ExportParameters(false);

然后我可以在byte []中获得rsa公钥的模数和指数。为了写在ASN.1格式

 RSAPublicKey ::= SEQUENCE { 
      modulus   INTEGER, -- n 
      publicExponent INTEGER -- e 
     } 

我用ASN.1库,以字节[]转换到其BIGINTEGER格式这些信息,但是这个字节[]应该是一样的格式{0 ','1','2','3','4','5','6','7','8','9'},假设它是十进制的。

但它看起来像rsaPublic.modulus和rsaPublic.exponent不是这种格式,在模数和指数的byte []中有很多非数字。那么rsaPublic.modulus和rsaPublic.exponent的格式是什么,以及如何将它们转换为格式如{'0','1','2','3','4','5 ','6','7','8','9'}?

非常感谢

回答

0

该格式在ASN.1参考中指定。使用的格式称为DER编码,用于整数。 A reference可用于这些丑陋的编码。你确定没有更简单的方法将这些值作为bigint吗?

编辑

看起来你可以通过RSACryptoServiceProvider.ExportParameters()得到一个RSAParameters对象,然后从这个ExponentModulus领域提取得到的byte []数组。

+0

我使用了一个asn.1库。它可以很容易地处理asn.1公钥格式。但问题是我不知道如何将byte []中的.net模数转换为合理的字节[],如{'0','1','2','3','4','5' ,'6','7','8','9'},字节[]中的rsa模量似乎没有意义,它是以某种格式编码的? – travellover 2010-02-19 00:38:10

+0

它基本上是作为大端字节数组的整数,前面有一些标题字节。等价地,它是以256为底数表示的整数。你想用byte []来做什么,那么也许我可以给出更好的线索。 – 2010-02-19 00:45:21

+0

我需要它们通过.net RSA模数和指数生成PKCS#1 asn.1 RSA公钥。 我的方法是使用asn.1库。它可以在base-2,base-18,base-10或base-16中接受byte []中的模数和指数,然后生成自己的大整数,然后生成PKCS#1公钥格式。 所以首先我想通过.net RSA模数和指数生成biginteger。 .net RSA模数和指数在byte []中,但并不是所有这些byte []中的元素都是ASCII数字,对不对? 我希望你能理解我在说什么。 – travellover 2010-02-19 05:44:27

0

byte[]值表示大整数的字节编码的Big Endian表示。这几乎与DER编码一样,但不完全相同。

对于ModulusRSAParameters结构需要DER值,但删除了可选的符号填充0x00字节。对于Exponent这是一样的。

如果你有一个私钥结构,那么D必须具有相同的长度byte[]Modulus(这可能意味着你必须预先考虑0x00值)。 PQDPDQ,和InverseQ是如果指定D所有必需的,而且必须有正好一半Modulus的长度,这可能需要去除DER填充字节或可能需要插入一些。

+0

如果属实,那么我的回答是错误的,我会删除它。你怎么解决这个问题的? – 2016-09-27 22:21:41

+0

@JamesKPolk这是有点折磨,但https://github.com/dotnet/corefx/blob/6225e48bd3945f245a9f96fe46ee1cfc05fa57bd/src/System.Security.Cryptography.X509Certificates/tests/PublicKeyTests.cs#L129-L152。如果您阅读DER/ASN.1解码器中的相关证书,您将看到期望的模数和指数与没有标签和长度(以及模数值的填充字节)的DER值相同。虽然我有点担心,但我的答案意味着标签和长度应该存在...... – bartonjs 2016-09-27 22:38:39

相关问题