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

Jua*_*ero 5 c# groovy rsa exponent modulus

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

<RSAKeyValue>
   <Modulus>
      4kKhD/FWAMtQTRifArfXjxZN+6bOXTkHrVpyz/1wODhSOBqDewoSOFAp5boBd3wFjXszHA+gpUxZNWHRTj898Q==
   </Modulus>
   <Exponent>
      AQAB
   </Exponent>
<RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)

这些参数是在 512 位初始化的 RSA 变量中生成的

new RSACryptoServiceProvider(512)    
Run Code Online (Sandbox Code Playgroud)

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

byte[] decoded = encoded.decodeBase64()
string s == new String(decoded)
Run Code Online (Sandbox Code Playgroud)

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

bar*_*njs 4

在此处的 XML 表示形式中,数字是数字的 Base64 编码的 Big Endian 字节数组表示形式。对于它们来说,最明智的字符串格式(Base64 除外)是十六进制,因为它在字节边界处对齐;并且您可能有一个 Hex 到 BigInt 解码例程。

指数

Base64: AQAB
Hexadecimal: 01 00 01
Decimal: 65537
Run Code Online (Sandbox Code Playgroud)

模数

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
Run Code Online (Sandbox Code Playgroud)