【发布时间】:2023-04-07 22:31:01
【问题描述】:
我需要在 C# 中实现没有任何库(密钥生成除外)的 DSA,作为我作业的一部分。 我设法生成了公钥和私钥,但是当我尝试获取 G 或 Y 之类的参数并将它们转换为 BigInteger 时,有时会得到负参数。参数本身在字节数组中是正数!当我将它们转换为 BigInteger 时,它们只会变成负数。这是我尝试的方式:
DSAParameters keys;
DSACryptoServiceProvider DSAalg = new DSACryptoServiceProvider();
keys = DSAalg.ExportParameters(true);
BigInteger G = new BigInteger(keys.G);
Console.WriteLine("G is {0} \n", G);
有什么办法可以解决这个问题吗?
【问题讨论】:
-
高于 127 的最重要字节被视为负数,除非前面有 00 字节。这可能会使您的某些结果为负。请参阅“ToByteArray”的文档。
标签: c# bytearray biginteger dsa