Пример #1
0
        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));
            }
        }
Пример #2
0
        /// <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);
        }