2016-09-27 68 views
2

我在C#與的RSACryptoServiceProvider生成的公開密鑰:c#RSACryptoServiceProvider中指數和模數的數據類型?

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

這些參數在512位

new RSACryptoServiceProvider(512)  

立即初始化的RSA變量生成,我需要使用這些(模數和指數)來加密一些數據,但在groovy(在SoapUI測試groovyscript)。 在groovy中,我正在測試RSA加密,並且對於它的公鑰,它只用十進制數得到模數和指數。上述模看起來像一個base64字符串,但是當我試圖在常規解碼,它得到一些特殊字符,我使用的代碼是

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

我最後需要的是知道如何使用的模量和在c#中獲得的指數用於加密groovy中的一些數據。 一些幫助如何做到這一點?

回答

3

在這裏的XML表示中,數字是Base64編碼的Big Endian字節數組表示的數字。對於他們來說最明智的字符串格式(除了Base64)是十六進制的,因爲它們在字節邊界對齊;你可能有一個Hex to 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

你使用哪種方法到的base64字符串轉換爲十進制決賽?我明白你說了什麼,但我無法達到相同的結果@bartonjs –

+1

@JuanFranciscoCaballero我使用http://tomeko.net/online_tools/base64.php?lang=en Base64-> Hex和http:// www。用於Hex-> BigInteger的mobilefish.com/services/big_number/big_number.php。小心不要將每個字節轉換爲整數,因爲這不是一個準確的轉換。 – bartonjs