c#RSACryptoServiceProvider中的指数和模数是什么类型的数据?

时间:2016-09-27 14:22:09

标签: c# groovy rsa modulus exponent

我在c#中使用RSACryptoServiceProvider生成公钥:

<RSAKeyValue>
   <Modulus>
      4kKhD/FWAMtQTRifArfXjxZN+6bOXTkHrVpyz/1wODhSOBqDewoSOFAp5boBd3wFjXszHA+gpUxZNWHRTj898Q==
   </Modulus>
   <Exponent>
      AQAB
   </Exponent>
<RSAKeyValue>

这些参数是在512位

初始化的RSA变量中生成的
new RSACryptoServiceProvider(512)    

现在,我需要使用这些(模数和指数)来加密一些数据,但是在groovy(SoapUI测试中的groovyscript)中。 在groovy中,我正在测试RSA加密,并且对于它的公钥,它获得的模数和指数只有十进制数。上面的模数看起来像一个base64字符串,但是当我尝试在groovy中解码时,它会获得一些特殊字符,我使用的代码是

byte[] decoded = encoded.decodeBase64()
string s == new String(decoded)

我最终需要知道如何使用c#中获得的模数和指数来加密groovy中的一些数据。 一些帮助如何做到这一点?

2 个答案:

答案 0 :(得分:3)

在这里的XML表示中,数字是数字的Base64编码的Big Endian字节数组表示。它们最合理的字符串格式(除了Base64)是十六进制的,因为它在字节边界处对齐;你可能有一个Hex到BigInt解码程序。

指数

Base64: AQAB
Hexadecimal: 01 00 01
Decimal: 65537

模量

Base64:
    4kKhD/FWAMtQTRifArfXjxZN+6bOXTkHrVpyz/1wODhSOBqDewoSOFAp5boBd3wFjXszHA+gpUxZNWHRTj898Q==
Hexadecimal: 
    E2 42 A1 0F F1 56 00 CB 50 4D 18 9F 02 B7 D7 8F
    16 4D FB A6 CE 5D 39 07 AD 5A 72 CF FD 70 38 38
    52 38 1A 83 7B 0A 12 38 50 29 E5 BA 01 77 7C 05
    8D 7B 33 1C 0F A0 A5 4C 59 35 61 D1 4E 3F 3D F1
Decimal:
     11 850 211 890 167 428 942 656 005 762 527 792
    664 504 148 414 649 299 622 730 495 954 496 884
    582 668 295 994 906 881 962 852 147 063 424 895
    822 707 299 811 616 971 053 013 246 862 591 780
    599 074 078 193

答案 1 :(得分:0)

Modulusbyte[]

有关详细信息,请参阅RSAParameters structure