C# 从表示为字符串的非常大的整数中获取字节数组
我有一个非常大的素数(用于RSA),需要转换为字节数组。但是,该数字当前存储为字符串。我可以将其存储为byte[],但无论如何,数字都是字符串,我必须将其放入字节数组中 现在要明确的是,我已经使用了MSDN上提供的RSA加密和解密示例数据,并且一切都正常,因此我对加密部分很有信心。此外,MSDN提供的示例提供了已转换为字节[]的素数。因此,我很有信心分解是在将数字的字符串表示形式转换为字节[]的过程中进行的 我现在这样做:C# 从表示为字符串的非常大的整数中获取字节数组,c#,arrays,C#,Arrays,我有一个非常大的素数(用于RSA),需要转换为字节数组。但是,该数字当前存储为字符串。我可以将其存储为byte[],但无论如何,数字都是字符串,我必须将其放入字节数组中 现在要明确的是,我已经使用了MSDN上提供的RSA加密和解密示例数据,并且一切都正常,因此我对加密部分很有信心。此外,MSDN提供的示例提供了已转换为字节[]的素数。因此,我很有信心分解是在将数字的字符串表示形式转换为字节[]的过程中进行的 我现在这样做: private static string _publicKeyExpo
private static string _publicKeyExponent = "12345...310 digits......9876";
private static string _publicKeyModulus = "654782....620 digits.....4576";
_rsaPublicKey.Exponent = CoreHelpers.GetBytes(_publicKeyExponent);
这是我的GetBytes方法,我怀疑它是导致问题的原因,因为它获取的是字符串的字节,而不是数字
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,然后获取其中的字节。将它添加到某个主字节数组中,然后再次执行。您可以使用该结构。它包含许多
Parse
静态方法和ToByteArray
方法。示例代码:
public static byte[] GetBytes(string str)
{
BigInteger number;
return BigInteger.TryParse(str, out number) ? number.ToByteArray() : null;
}
为什么不使用struct呢?它包含
Parse
和ToByteArray
方法。问题是您正在将数字的字符代码复制到字节数组中,而不是数字的数值。您应该指定所需的输出格式(endianness等)。@Dmitry PERFECT…就像我在OP中所说的。我不知道哪种类型,但现在多亏了您,我知道了。如果你能回答我,我会欣然接受。