簡體   English   中英

從表示為字符串的非常大的整數中獲取字節數組

[英]Get Byte array from very large integer represented as string

我有一個很大的素數(出於RSA的目的),需要轉換為字節數組。 但是,該數字當前存儲為字符串。 我可以將其存儲為byte [],但是可以用數字的任何一種方式將其存儲為字節數組。

現在清楚一點,我已經使用了MSDN上提供的RSA加密和解密示例數據,並且一切正常,因此我對加密部分很好感到很有信心。 此外,MSDN提供的樣本提供了已經轉換為byte []的質數。 因此,我非常有信心該故障在於將數字的字符串表示形式轉換為byte []的MY轉換。

我目前正在這樣做:

private static string _publicKeyExponent = "12345...310 digits......9876";
private static string _publicKeyModulus = "654782....620 digits.....4576";

_rsaPublicKey.Exponent = CoreHelpers.GetBytes(_publicKeyExponent);

這是我懷疑是我的GetBytes方法引起的問題,因為它獲取的是STRING個字符的字節而不是數字。

    public static byte[] GetBytes(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }

現在,如果我已經確定問題的解決方法,應該是直接嗎? 對我來說是,不是。 我不知道我可以將這種大小的數字解析為C#中的任何強類型。 我能想到的最好的主意是將字符串分成較小的塊,例如10個字符,然后可以輕松地將其解析為INT32,然后再獲取該字節。 將其添加到某個主字節數組,然后再次執行。

您可以使用BigInteger結構。
它包含許多Parse靜態方法和ToByteArray方法。
樣例代碼:

public static byte[] GetBytes(string str)
{
    BigInteger number;
    return BigInteger.TryParse(str, out number) ? number.ToByteArray() : null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM