我需要在C#中没有任何libaries(除了密钥生成)之外实现DSA,这是我作业的一部分。 我设法生成公钥和私钥,但是当我尝试获取像G或Y这样的参数并将它们转换为BigInteger时,我有时会得到负面参数。字节数组中的参数本身是正数!当我将它们转换成BigInteger时,它们会变成负面的。这是我尝试它的方式:从byte []转换为BigInteger时,DSAParameters为负数
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'。 –