public static CalculateX ( IDigest digest, |
||
digest | IDigest | |
N | ||
salt | byte | |
identity | byte | |
password | byte | |
Résultat |
public static BigInteger CalculateX(IDigest digest, BigInteger N, byte[] salt, byte[] identity, byte[] password)
{
byte[] output = new byte[digest.GetDigestSize()];
digest.BlockUpdate(identity, 0, identity.Length);
digest.Update((byte)':');
digest.BlockUpdate(password, 0, password.Length);
digest.DoFinal(output, 0);
digest.BlockUpdate(salt, 0, salt.Length);
digest.BlockUpdate(output, 0, output.Length);
digest.DoFinal(output, 0);
return new BigInteger(1, output).Mod(N);
}
public virtual BigInteger GenerateClientCredentials(byte[] salt, byte[] identity, byte[] password) { x = Srp6Utilities.CalculateX(digest, N, salt, identity, password); privA = SelectPrivateValue(); pubA = g.ModPow(privA, N); return(pubA); }