public RemoteGroup(string primeString, string generatorString) { SHA1Managed sha1 = new SHA1Managed(); generator = new BigInteger(2); byte[] primeBytes = RemotePassword.getBytes(primeString); prime = new BigInteger(1, primeBytes); byte[] generatorBytes = generator.ToByteArray(); int pad = primeBytes.Length - generatorBytes.Length; byte[] buffer = new byte[primeBytes.Length + Math.Max(0, pad) + generatorBytes.Length]; Array.Copy(primeBytes, 0, buffer, 0, primeBytes.Length); Array.Copy(generatorBytes, 0, buffer, primeBytes.Length + Math.Max(0, pad), generatorBytes.Length); byte[] kBytes = sha1.ComputeHash(buffer); k = new BigInteger(1, kBytes); }
public virtual void encodeBigDecimal(Decimal bd) { int scale; Decimal temp; ConvertToScaledDecimal(bd, out scale, out temp); if (temp.CompareTo(long.MinValue) > 0 && temp.CompareTo(long.MaxValue) < 0) encodeLong((long)temp, scale); else { BigInteger bi = new BigInteger(Decimal.Truncate(Math.Abs(temp)).ToString(), 10); byte[] byteArray = bi.ToByteArray(); write(edsScaledCount2); write(scale); write(bd.CompareTo(Decimal.Zero)); write(byteArray.Length); write(byteArray); } }
public virtual void encodeOldBigDecimal(decimal bd) { int scale; Decimal temp; ConvertToScaledDecimal(bd, out scale, out temp); int neg = bd.CompareTo(decimal.Zero) == -1 ? 1 : 0; // The server expects a byte array with a signed first byte. // BigInteger.toByteArray() creates an array of the value in two's compliment. // So get the unsigned value and set the sign bit manually. BigInteger bi = new BigInteger(Decimal.Truncate(Math.Abs(temp)).ToString(), 10); byte[] byteArray = bi.ToByteArray(); if (neg == 1) { byteArray[0] |= 0x80; } write(edsScaledCount1); write(byteArray.Length + 1); write(scale); write(byteArray); }
public static string getHex(BigInteger number) { return getHex(number.ToByteArray()); }