private void DigestTest(byte[] Data, byte[] Expected) { byte[] hash = new byte[0]; // Make test vector for 256-bit hash if (Expected.Length == 32) { using (Skein256 skein256 = new Skein256()) hash = skein256.ComputeHash(Data); } else if (Expected.Length == 64) { using (Skein512 skein512 = new Skein512()) hash = skein512.ComputeHash(Data); } else { using (Skein1024 skein1024 = new Skein1024()) hash = skein1024.ComputeHash(Data); } if (Evaluate.AreEqual(hash, Expected) == false) { throw new Exception("Skein256: Hash values are not equal! Expected: " + HexConverter.ToString(Expected) + " Received: " + HexConverter.ToString(hash)); } }
/// <summary> /// Función encargada del establecimiento de la clave. Nota: Como base para la clave se ha tomado el nombre de /// usuario junto con la ruta donde se aloja el ejecutable. Aunque este texto sea tratado con el algoritmo Skein512, /// cualquiera con acceso al código lo descifraría sin complicaciones. Su uso es privado porque está incluida en /// las funciones estáticas de (des)cifrado de texto. /// </summary> /// <param name="bytesClave">El tomaño en bytes de la clave</param> /// <returns>Una matriz de bytes dimensionada con el tamaño requerido</returns> private static byte[] setClave(byte bytesClave) { var hash = new Skein512(); string entorno = Environment.UserName + Directory.GetCurrentDirectory(); byte[] clave = hash.ComputeHash(Encoding.UTF32.GetBytes(entorno)); Array.Resize <byte>(ref clave, bytesClave); return(clave); }