Mega Code Archive

 
Categories / C# / Security
 

Key Creator

using System.Security.Cryptography; using System.Text; namespace NHibernateProvider.Util {     /// <summary>     /// Helper class to generate a machine key for use in the application's config file to override the default key used by the provider.     /// </summary>     internal static class KeyCreator     {         #region Main for Testing         //public static void main(string[] args)         //{         //    string decryptionKey = CreateKey(Convert.ToInt32(args[1]));         //    string validationKey = CreateKey(Convert.ToInt32(args[2]));         //    Console.WriteLine("<machinekey validationkey=\"{0}\" decryptionkey=\"{1}\" validation=\"sha1\"/>", validationKey, decryptionKey);         //}         #endregion Main for Testing         #region Operations         /// <summary>         /// Creates a key based on the indicated size.         /// </summary>         /// <param name="numBytes">size of the key.</param>         /// <returns>Generated key of the specified length.</returns>         public static string CreateKey(int numBytes)         {             RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();             byte[] buff = new byte[numBytes];             rng.GetBytes(buff);             return BytesToHexString(buff);         }         /// <summary>         /// Converts the given byte array to a hex string representation.         /// </summary>         /// <param name="bytes">the data to convert.</param>         /// <returns>Hexadecimal string representation of the given byte array./</returns>         public static string BytesToHexString(byte[] bytes)         {             StringBuilder hexString = new StringBuilder(64);             for (int counter = 0; counter < bytes.Length; counter++)             {                 hexString.Append(string.Format("{0:X2}", bytes[counter]));             }             return hexString.ToString();         }         #endregion Operations     } }