public void TestAnotherChunkedDataIncrementalHash() { string temp, ActualString, ExpectedString; Int32 x, size, i; for (x = 0; x < TestConstants.chunkSize.Length / sizeof(Int32); x++) { size = TestConstants.chunkSize[x]; foreach (var Idx in WorkingIndex) { GetWorkingValue(Idx); crcObj.Initialize(); i = size; while (i < TestConstants.ChunkedData.Length) { temp = TestConstants.ChunkedData.Substring(i - size, size); crcObj.TransformString(temp, Encoding.UTF8); i += size; } // end while temp = TestConstants.ChunkedData.Substring((i - size)); crcObj.TransformString(temp, Encoding.UTF8); ActualString = crcObj.TransformFinal().ToString(); ExpectedString = crcObj.ComputeString(TestConstants.ChunkedData, Encoding.UTF8) .ToString(); Assert.AreEqual(ExpectedString, ActualString); } // end for } // end for }
public void StringTest() { IHash hash = HashFactory.Crypto.SHA3.CreateKeccak(); HashResult hashResult = hash.ComputeString("This is a message!"); Assert.True(hashResult.GetBytes().Length == 64); }
public static string GetHash(string str) { IHash hash = Hash; HashResult res = hash.ComputeString(str); return(GetString(res.GetBytes())); }
public async Task <AuthenticationTicket> GetRootAuthenticateTicketAsync(string username, string password) { var user = await _dbContext.Set <CcUiAuthen>().AsNoTracking().FirstOrDefaultAsync(p => p.Login == username); if (user == null) { return(null); } IHash hash = HashFactory.Crypto.CreateWhirlpool(); HashResult r = hash.ComputeString(password, Encoding.ASCII); string passwordEncoded = Regex.Replace(r.ToString(), "-", string.Empty).ToLower(); if (user.PwdEncoded != passwordEncoded) { return(null); } var identity = new ClaimsIdentity(); identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Userid.ToString())); identity.AddClaim(new Claim(ClaimTypes.Role, "Administrator")); var principal = new ClaimsPrincipal(identity); var prop = new AuthenticationProperties() { IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddDays(1) }; return(new AuthenticationTicket(principal, prop, "application")); }
public static void MultithreadComputeHash(ref string result, IHash hash, Int32 iterations) { for (Int32 i = 0; i < iterations; i++) { Thread.Sleep(250); result = hash.ComputeString(result, Encoding.UTF8).ToString(); } // end for } // end function MultithreadComputeHash
public static byte[] SH224(string str) { IHash hash = HashFactory.Crypto.CreateSHA224(); HashResult r = hash.ComputeString(str, System.Text.Encoding.UTF8); return(r.GetBytes()); }
/// <summary> /// 加密 /// </summary> /// <param name="sourceStr"></param> /// <returns></returns> public virtual string Encryption(string sourceStr) { if (string.IsNullOrWhiteSpace(sourceStr)) { throw new NothingToEncrypOrDecryptException(); } HashResult result = currentHash.ComputeString(sourceStr, Encode); string resultStr = result.ToString(); return(ResultFilter(resultStr)); }
private void okButton_Click(object sender, EventArgs e) { if (masterEntryTextBox.Text.Trim().Equals("")) { MessageBox.Show("Please enter the password.", "Missing Password"); } else { SQLiteDatabase database = new SQLiteDatabase(); string storedHash = database.SelectHash(); if (Properties.Settings.Default.UseSHA3Hashing) { IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult hashResult = hash.ComputeString(masterEntryTextBox.Text); if (hashResult.ToString().Equals(storedHash)) { // Put user's password in a secure string for later use foreach (char c in masterEntryTextBox.Text) { SharedObject.encryptedPassword.AppendChar(c); } SharedObject.passwordGood = true; this.Close(); } else { MessageBox.Show("Password is not valid. Please try again.", "Invalid Password"); } } else { if (PasswordHash.ValidatePassword(masterEntryTextBox.Text, storedHash)) { // Put user's password in a secure string for later use foreach (char c in masterEntryTextBox.Text) { SharedObject.encryptedPassword.AppendChar(c); } SharedObject.passwordGood = true; this.Close(); } else { MessageBox.Show("Password is not valid. Please try again.", "Invalid Password"); } } } }
protected void TestComputeTransforms(IHash a_hash) { foreach (var creator in m_creators) { for (int i = 0; i < 10; i++) { object v = creator(); byte[] bytes = Converters.ConvertToBytes(v); var h1 = a_hash.ComputeObject(v); var h2 = a_hash.ComputeBytes(bytes); Assert.AreEqual(h1, h2, String.Format("{0}, {1}", a_hash.Name, i)); } } { var h3 = a_hash.ComputeString("rwffasfger4536552▰Ḑ"); var h4 = a_hash.ComputeString("rwffasfger4536552▰Ḑ", Encoding.Unicode); Assert.AreEqual(h3, h4); } }
private void ChangePassword(HttpContext context) { string pass = context.Request.Params["pass"]; if (!string.IsNullOrEmpty(pass)) { Data.dbml.AppUsers u = this.GetDataContext2.AppUsers.First(o => o.ID == Common.UserID); IHash hash = Common.Hash; HashResult res = hash.ComputeString(pass); u.Password = Common.GetString(res.GetBytes()); GetDataContext2.SubmitChanges(); context.Response.Write(strings.Pass_Updated); } }
private void ChangePassword(HttpContext context) { string pass = context.Request.Params["pass"]; if (!string.IsNullOrEmpty(pass)) { Nails.edmx.AppUsers u = this.GetNailsProdContext.AppUsers.First(o => o.ID == Common.UserID); IHash hash = Common.Hash; HashResult res = hash.ComputeString(pass); u.Password = Common.GetString(res.GetBytes()); this.GetNailsProdContext.SaveChanges(); context.Response.Write("Password has been updated"); } }
private void okButton_Click(object sender, EventArgs e) { if (masterEntryTextBox.Text.Trim().Equals("") || masterConfirmTextBox.Text.Trim().Equals("")) { MessageBox.Show("Password fields cannot be blank.", "Missing Passwords"); } else { if (masterEntryTextBox.Text.Equals(masterConfirmTextBox.Text)) { // Put user's password in a secure string for later use foreach (char c in masterEntryTextBox.Text) { SharedObject.encryptedPassword.AppendChar(c); } string hashString; if (Properties.Settings.Default.UseSHA3Hashing) { IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult hashResult = hash.ComputeString(masterEntryTextBox.Text); hashString = hashResult.ToString(); } else { hashString = PasswordHash.CreateHash(masterEntryTextBox.Text); } // Generate a random salt RNGCryptoServiceProvider saltGenerator = new RNGCryptoServiceProvider(); byte[] saltBytes = new byte[24]; saltGenerator.GetBytes(saltBytes); string salt = Convert.ToBase64String(saltBytes); saltGenerator.Dispose(); SQLiteDatabase database = new SQLiteDatabase(); database.CreateDatabase(); database.InsertHash(hashString, salt); SharedObject.passwordGood = true; this.Close(); } else { MessageBox.Show("Passwords do not match.", "Mismatched Passwords"); } } }
public void TestCheckValue() { string ActualString, ExpectedString; foreach (CRCStandard Idx in CRCStandardValues) { crcObj = HashFactory.Checksum.CreateCRC(Idx); ExpectedString = ((crcObj as ICRC).CheckValue.ToString("X")); ActualString = TestHelper.LeftStrip(crcObj.ComputeString(TestConstants.OnetoNine, Encoding.UTF8).ToString(), '0'); Assert.AreEqual(ExpectedString, ActualString); } // end foreach }
} // end function TestHMACCloneIsCorrect public static void TestActualAndExpectedData(object actual, object expected, IHash i_hash) { string ActualString, name = actual.GetType().Name; if (name == "String") { ActualString = i_hash?.ComputeString((string)actual, Encoding.UTF8).ToString(); } else if (actual.GetType().Name == "Byte[]") { ActualString = i_hash?.ComputeBytes((byte[])actual).ToString(); } else { throw new NotImplementedException("Kindly implement new type."); } Assert.AreEqual(expected, ActualString, String.Format("Expected {0} but got {1}.", expected, ActualString)); }
public void TestForNullString() { string ActualString; // ActualString = hash.ComputeString(null, Encoding.UTF8).ToString(); // Assert.AreEqual(ExpectedHashOfEmptyData, ActualString, String.Format("Expected {0} but got {1}.", ExpectedHashOfEmptyData, ActualString)); // hash.Initialize(); hash.TransformString(null, Encoding.UTF8); ActualString = hash.TransformFinal().ToString(); // Assert.AreEqual(ExpectedHashOfEmptyData, ActualString, String.Format("Expected {0} but got {1}.", ExpectedHashOfEmptyData, ActualString)); } // end function
/// <summary> /// /// </summary> /// <param name="args"></param> static void Main(string[] args) { string strSource = "lichaoqiang"; string strMd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "md5"); var md5 = System.Security.Cryptography.MD5.Create(); byte[] encrypt = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource)); StringBuilder sBuilder = new StringBuilder(); // Loop through each byte of the hashed data // and format each one as a hexadecimal string. for (int i = 0; i < encrypt.Length; i++) { sBuilder.Append(encrypt[i].ToString("x2")); } string strMd52 = sBuilder.ToString(); //斯内夫鲁 IHash hash = HashLib.HashFactory.Crypto.CreateSnefru_8_128(); HashResult hashResult = hash.ComputeString("www.lichaoqiang.com"); Console.WriteLine(hashResult.ToString()); //hash32 string strHash32 = HashLib.HashFactory.Hash32.CreateRS().ComputeString("www.lichaoqianag.com").ToString(); Console.WriteLine("CreateRS:{0}", strHash32); strHash32 = HashLib.HashFactory.Hash32.CreatePJW().ComputeString("www.lichaoqianag.com").ToString(); Console.WriteLine("CreatePJW:{0}", strHash32); // string strHmac = HashLib.HashFactory.HMAC.CreateHMAC(hash).ComputeString("www.lichaoqiang.com").ToString(); Console.WriteLine("CreateHMAC:{0}", strHmac); Console.ReadLine(); }
public static string Login(string username, string password) { Query dbQuery = new Query(); string query = dbQuery.LoginQuery(username, password); DBConnect db = new DBConnect(); DataTable dbResp = db.Select(query); try { string respUsername = dbResp.Rows[0]["username"].ToString(); string respPassword = dbResp.Rows[0]["password"].ToString(); // If no exception is caught then the user logged in sucessfully... // Make sure to set cookies for later... var response = HttpContext.Current.Response; IHash hash = HashFactory.Crypto.CreateMD5(); var expectedVal = hash.ComputeString(respUsername + respPassword, Encoding.ASCII); db.Update(dbQuery.UpdateHash(respUsername, respPassword, expectedVal.ToString())); if (response.Cookies["password"] != null) { response.Cookies["password"].Value = expectedVal.ToString(); } else { var passCookie = new HttpCookie("password"); passCookie.Value = expectedVal.ToString(); response.Cookies.Add(passCookie); } if (response.Cookies["userName"] != null) { response.Cookies["userName"].Value = respUsername; } else { var userNameCookie = new HttpCookie("userName"); userNameCookie.Value = respUsername; response.Cookies.Add(userNameCookie); } if (response.Cookies["loggedIn"] != null) { response.Cookies["loggedIn"].Value = "True"; } else { var loggedInCookie = new HttpCookie("loggedIn"); loggedInCookie.Value = "True"; response.Cookies.Add(loggedInCookie); } // Send back profile information dbResp.Columns.Remove("password"); string jsonResponse = JsonConvert.SerializeObject(dbResp); //Update the last login date... if (db.Update( "users", new List <string>(new[] { "lastlogin" }), new List <string>(new[] { DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") }), new List <string>(new[] { "id" }), new List <string>(new[] { "'" + dbResp.Rows[0]["id"].ToString() + "'" }), new List <string>(new[] { "=" }) ) > 0) { return("{\"Success\" : \"Login sucessful\", \"Info\" : " + jsonResponse + "}"); } return("{\"Error\" : \"Login failed\"}"); } catch (Exception e) { var response = HttpContext.Current.Response; if (response.Cookies["userName"] != null) { response.Cookies["userName"].Value = ""; } else { var userNameCookie = new HttpCookie("userName"); userNameCookie.Value = ""; response.Cookies.Add(userNameCookie); } if (response.Cookies["loggedIn"] != null) { response.Cookies["loggedIn"].Value = "False"; } else { var loggedInCookie = new HttpCookie("loggedIn"); loggedInCookie.Value = "False"; response.Cookies.Add(loggedInCookie); } return("{\"Error\" : \"Login failed\"}"); } }
private void TestFastHash32(IHash a_hash) { IFastHash32 fh = a_hash as IFastHash32; if (fh == null) return; for (int i=0; i<10; i++) { { var data = m_random.NextBytes((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeBytesFast(data); var h2 = a_hash.ComputeBytes(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextInt(); var h1 = fh.ComputeIntFast(data); var h2 = a_hash.ComputeInt(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUInt(); var h1 = fh.ComputeUIntFast(data); var h2 = a_hash.ComputeUInt(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextByte(); var h1 = fh.ComputeByteFast(data); var h2 = a_hash.ComputeByte(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextChar(); var h1 = fh.ComputeCharFast(data); var h2 = a_hash.ComputeChar(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextShort(); var h1 = fh.ComputeShortFast(data); var h2 = a_hash.ComputeShort(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUShort(); var h1 = fh.ComputeUShortFast(data); var h2 = a_hash.ComputeUShort(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextDoubleFull(); var h1 = fh.ComputeDoubleFast(data); var h2 = a_hash.ComputeDouble(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextFloatFull(); var h1 = fh.ComputeFloatFast(data); var h2 = a_hash.ComputeFloat(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextLong(); var h1 = fh.ComputeLongFast(data); var h2 = a_hash.ComputeLong(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextULong(); var h1 = fh.ComputeULongFast(data); var h2 = a_hash.ComputeULong(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUInts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeUIntsFast(data); var h2 = a_hash.ComputeUInts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextInts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeIntsFast(data); var h2 = a_hash.ComputeInts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextLongs((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeLongsFast(data); var h2 = a_hash.ComputeLongs(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextULongs((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeULongsFast(data); var h2 = a_hash.ComputeULongs(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextDoublesFull((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeDoublesFast(data); var h2 = a_hash.ComputeDoubles(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextFloatsFull((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeFloatsFast(data); var h2 = a_hash.ComputeFloats(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextChars((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeCharsFast(data); var h2 = a_hash.ComputeChars(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUShorts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeUShortsFast(data); var h2 = a_hash.ComputeUShorts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextString((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeStringFast(data); var h2 = a_hash.ComputeString(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextShorts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeShortsFast(data); var h2 = a_hash.ComputeShorts(data); Assert.AreEqual(h1, h2.GetInt()); } } }
protected void TestHashImplementationValueType(IHash a_baseHashFunction, IHash a_hash) { for(int j = 0; j < 8; j++) { { byte v = m_random.NextByte(); Assert.AreEqual(a_baseHashFunction.ComputeByte(v), a_hash.ComputeByte(v), a_hash.Name); } { char v = m_random.NextChar(); Assert.AreEqual(a_baseHashFunction.ComputeChar(v), a_hash.ComputeChar(v), a_hash.Name); } { short v = m_random.NextShort(); Assert.AreEqual(a_baseHashFunction.ComputeShort(v), a_hash.ComputeShort(v), a_hash.Name); } { ushort v = m_random.NextUShort(); Assert.AreEqual(a_baseHashFunction.ComputeUShort(v), a_hash.ComputeUShort(v), a_hash.Name); } { int v = m_random.Next(); Assert.AreEqual(a_baseHashFunction.ComputeInt(v), a_hash.ComputeInt(v), a_hash.Name); } { uint v = m_random.NextUInt(); Assert.AreEqual(a_baseHashFunction.ComputeUInt(v), a_hash.ComputeUInt(v), a_hash.Name); } { long v = m_random.NextLong(); Assert.AreEqual(a_baseHashFunction.ComputeLong(v), a_hash.ComputeLong(v), a_hash.Name); } { ulong v = m_random.NextULong(); Assert.AreEqual(a_baseHashFunction.ComputeULong(v), a_hash.ComputeULong(v), a_hash.Name); } { double v = m_random.NextDoubleFull(); Assert.AreEqual(a_baseHashFunction.ComputeDouble(v), a_hash.ComputeDouble(v), a_hash.Name); } { float v = m_random.NextFloatFull(); Assert.AreEqual(a_baseHashFunction.ComputeFloat(v), a_hash.ComputeFloat(v), a_hash.Name); } } for(int j = 0; j < 2; j++) { for(int i = 2050; i <= (a_hash.BlockSize * 3 + 1); i++) { byte[] v = m_random.NextBytes(i); Assert.AreEqual(a_baseHashFunction.ComputeBytes(v), a_hash.ComputeBytes(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 2; i++) { char[] v = m_random.NextChars(i); Assert.AreEqual(a_baseHashFunction.ComputeChars(v), a_hash.ComputeChars(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 2; i++) { short[] v = m_random.NextShorts(i); Assert.AreEqual(a_baseHashFunction.ComputeShorts(v), a_hash.ComputeShorts(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 2; i++) { ushort[] v = (from n in Enumerable.Range(0, i) select m_random.NextUShort()).ToArray(); Assert.AreEqual(a_baseHashFunction.ComputeUShorts(v), a_hash.ComputeUShorts(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 4; i++) { int[] v = m_random.NextInts(i); Assert.AreEqual(a_baseHashFunction.ComputeInts(v), a_hash.ComputeInts(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 4; i++) { uint[] v = m_random.NextUInts(i); Assert.AreEqual(a_baseHashFunction.ComputeUInts(v), a_hash.ComputeUInts(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 1; i <= (a_hash.BlockSize * 3 + 1) / 8; i++) { long[] v = m_random.NextLongs(i); Assert.AreEqual(a_baseHashFunction.ComputeLongs(v), a_hash.ComputeLongs(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 8; i++) { ulong[] v = m_random.NextULongs(i); Assert.AreEqual(a_baseHashFunction.ComputeULongs(v), a_hash.ComputeULongs(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 8; i++) { double[] v = m_random.NextDoublesFull(i); Assert.AreEqual(a_baseHashFunction.ComputeDoubles(v), a_hash.ComputeDoubles(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 4; i++) { float[] v = m_random.NextFloatsFull(i); Assert.AreEqual(a_baseHashFunction.ComputeFloats(v), a_hash.ComputeFloats(v), String.Format("{0}, {1}", a_hash.Name, i)); } for(int i = 0; i <= (a_hash.BlockSize * 3 + 1) / 2; i++) { string v = m_random.NextString(i); Assert.AreEqual(a_baseHashFunction.ComputeString(v), a_hash.ComputeString(v), String.Format("{0}, {1}", a_hash.Name, i)); } } }
private void okButton_Click(object sender, EventArgs e) { if (masterEntryTextBox.Text.Trim().Equals("") || masterConfirmTextBox.Text.Trim().Equals("")) { MessageBox.Show("Password fields cannot be blank.", "Missing Password"); } else { if (masterEntryTextBox.Text.Equals(masterConfirmTextBox.Text)) { database = new SQLiteDatabase(); credentials = database.SelectAllSecureCredentials(); // Decrypt all the usernames and passwords using the old key for (int i = 0; i < credentials.Count; i++) { credentials[i].username = CredentialEncryption.DecryptCredential(credentials[i].username); credentials[i].password = CredentialEncryption.DecryptCredential(credentials[i].password); } string hashString; if (Properties.Settings.Default.UseSHA3Hashing) { IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult hashResult = hash.ComputeString(masterEntryTextBox.Text); hashString = hashResult.ToString(); } else { hashString = PasswordHash.CreateHash(masterEntryTextBox.Text); } database.UpdateHash(hashString); // Update salt? // Put user's password in a secure string for later use SharedObject.encryptedPassword.Clear(); foreach (char c in masterEntryTextBox.Text) { SharedObject.encryptedPassword.AppendChar(c); } // Re-encrypt all the usernames and password using the new key CredentialEncryption.DeriveKey(); for (int i = 0; i < credentials.Count; i++) { credentials[i].username = CredentialEncryption.EncryptCredential(credentials[i].username); credentials[i].password = CredentialEncryption.EncryptCredential(credentials[i].password); database.UpdateSecureCredential(credentials[i], credentials[i].id); } // SharedObject.passwordGood = true; this.Close(); } else { MessageBox.Show("Passwords do not match.", "Mismatched Passwords"); } } }
public static void Main(string[] args) { // Prepare temp file. string file_name = Path.GetTempFileName(); using (var fs = new FileStream(file_name, FileMode.Open)) { byte[] v = new byte[256]; new Random().NextBytes(v); fs.Write(v, 0, v.Length); } // Prepare stream. MemoryStream ms = new MemoryStream(new byte[] { 2, 3, 4, 5, 6, 7 }); // Choose algorithm. Explore HashFactory for more algorithms. IHash hash = HashFactory.Crypto.CreateSHA256(); // Hash data immediate. HashResult r = hash.ComputeString("test", Encoding.ASCII); // Hash data. hash.Initialize(); // Not mandatory after Compute and TransformFinal hash.TransformULong(6); hash.TransformString("test"); r = hash.TransformFinal(); // Calculate 32-bits hash. hash = HashFactory.Checksum.CreateCRC32_IEEE(); uint crc32 = hash.ComputeString("test", Encoding.ASCII).GetUInt(); // For CRCs you may specify parameters. hash = HashFactory.Checksum.CreateCRC32( HashLib.Checksum.CRC32Polynomials.IEEE_802_3, uint.MaxValue, uint.MaxValue); hash = HashFactory.Checksum.CreateCRC32( 0xF0F0F0F0, uint.MaxValue, uint.MaxValue); // Most hashes can be created in two ways. hash = HashFactory.Crypto.CreateHaval(HashRounds.Rounds3, HashSize.HashSize256); hash = HashFactory.Crypto.CreateHaval_3_256(); // Calculate 64-bits hash. hash = HashFactory.Hash64.CreateMurmur2(); ulong crc64 = hash.ComputeString("test", Encoding.ASCII).GetULong(); // Calculate hash with key. var hash_with_key = HashFactory.Hash128.CreateMurmur3_128(); hash_with_key.Key = new MersenneTwister().NextBytes(hash_with_key.KeyLength.Value); r = hash_with_key.ComputeString("test", Encoding.ASCII); // This will restore default key. hash_with_key.Key = null; // Get some information about algorithm. BlockSize has only informative meaning. System.Console.WriteLine("{0}, {1}, {2}", hash.BlockSize, hash.HashSize, hash.Name); // Here you can find algorithms grouped by its properties. foreach (var h in Hashes.CryptoAll) { System.Console.WriteLine(((IHash)Activator.CreateInstance(h)).Name); } foreach (var h in Hashes.CryptoNotBuildIn) { System.Console.WriteLine(((IHash)Activator.CreateInstance(h)).Name); } foreach (var h in Hashes.CryptoBuildIn) { System.Console.WriteLine(((IHash)Activator.CreateInstance(h)).Name); } foreach (var h in Hashes.Checksums) { System.Console.WriteLine(((IHash)Activator.CreateInstance(h)).Name); } // ... And more // Hash stream. r = hash.ComputeStream(ms); ms.Position = 2; r = hash.ComputeStream(ms); // Compute all bytes starting from 2 ms.Position = 3; r = hash.ComputeStream(ms, 2); // Compute 2 bytes starting from 3 hash.TransformInt(111); ms.Position = 0; hash.TransformStream(ms); r = hash.TransformFinal(); // Hash file r = hash.ComputeFile(file_name); r = hash.ComputeFile(file_name, 10); // Compute all bytes starting from 10 r = hash.ComputeFile(file_name, 12, 10); // Compute 10 bytes starting from 12. hash.TransformInt(111); hash.TransformFile(file_name); r = hash.TransformFinal(); // Calculate HMAC. IHMAC hmac = HashFactory.HMAC.CreateHMAC(HashFactory.Crypto.CreateSHA256()); hmac.Key = Converters.ConvertStringToBytes("secret", Encoding.ASCII); r = hmac.ComputeString("test", Encoding.ASCII); Debug.Assert(hmac.KeyLength == null, "NULL means key can be any length"); // Get System.Security.Cryptography.HashAlgorithm wrapper for algorithms from this library. System.Security.Cryptography.HashAlgorithm hash2 = HashFactory.Wrappers.HashToHashAlgorithm(hash); // And back. hash = HashFactory.Wrappers.HashAlgorithmToHash(hash2); // Some algorithms have fast specialized methods for calculating hashes for all data types. // They are designed for calculating good-behaving hash codes for hash-tables. hash = HashFactory.Hash32.CreateMurmur2(); Debug.Assert(hash is IFastHash32); // Some algorithms can calculated hashes only when they had all needed data, // they accumulated data to the very end. hash = HashFactory.Hash32.CreateMurmur2(); Debug.Assert(hash is INonBlockHash); // Use build-in cryptography hash algorithms. hash = HashFactory.Crypto.BuildIn.CreateSHA256Cng(); // Delete temp file. new FileInfo(file_name).Delete(); }
private void TestFastHash32(IHash a_hash) { IFastHash32 fh = a_hash as IFastHash32; if (fh == null) { return; } for (int i = 0; i < 10; i++) { { var data = m_random.NextBytes((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeBytesFast(data); var h2 = a_hash.ComputeBytes(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextInt(); var h1 = fh.ComputeIntFast(data); var h2 = a_hash.ComputeInt(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUInt(); var h1 = fh.ComputeUIntFast(data); var h2 = a_hash.ComputeUInt(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextByte(); var h1 = fh.ComputeByteFast(data); var h2 = a_hash.ComputeByte(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextChar(); var h1 = fh.ComputeCharFast(data); var h2 = a_hash.ComputeChar(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextShort(); var h1 = fh.ComputeShortFast(data); var h2 = a_hash.ComputeShort(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUShort(); var h1 = fh.ComputeUShortFast(data); var h2 = a_hash.ComputeUShort(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextDoubleFull(); var h1 = fh.ComputeDoubleFast(data); var h2 = a_hash.ComputeDouble(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextFloatFull(); var h1 = fh.ComputeFloatFast(data); var h2 = a_hash.ComputeFloat(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextLong(); var h1 = fh.ComputeLongFast(data); var h2 = a_hash.ComputeLong(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextULong(); var h1 = fh.ComputeULongFast(data); var h2 = a_hash.ComputeULong(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUInts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeUIntsFast(data); var h2 = a_hash.ComputeUInts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextInts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeIntsFast(data); var h2 = a_hash.ComputeInts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextLongs((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeLongsFast(data); var h2 = a_hash.ComputeLongs(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextULongs((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeULongsFast(data); var h2 = a_hash.ComputeULongs(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextDoublesFull((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeDoublesFast(data); var h2 = a_hash.ComputeDoubles(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextFloatsFull((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeFloatsFast(data); var h2 = a_hash.ComputeFloats(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextChars((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeCharsFast(data); var h2 = a_hash.ComputeChars(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextUShorts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeUShortsFast(data); var h2 = a_hash.ComputeUShorts(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextString((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeStringFast(data); var h2 = a_hash.ComputeString(data); Assert.AreEqual(h1, h2.GetInt()); } { var data = m_random.NextShorts((i == 0) ? 0 : (int)(m_random.NextUInt() % 200)); var h1 = fh.ComputeShortsFast(data); var h2 = a_hash.ComputeShorts(data); Assert.AreEqual(h1, h2.GetInt()); } } }
public void Test(IHash a_hash, SpeedTestDataSourceRow a_row, bool a_bFast) { Random r = new Random(); int length = 10000000; { byte[] ar = new byte[length]; r.NextBytes(ar); if (a_bFast) { a_hash.ComputeByte(ar[0]); a_row.ByteSpeed = Measure(ar.Length, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeByte(ar[i]); }); } a_hash.ComputeBytes(ar.Take(100).ToArray()); a_row.BytesSpeed = Measure(ar.Length, () => { a_hash.ComputeBytes(ar); }); } { if (a_bFast) { char[] ar = (from n in Enumerable.Range(0, length / 2) select (char)r.Next()).ToArray(); a_hash.ComputeChar(ar[0]); a_row.CharSpeed = Measure(ar.Length * 2, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeChar(ar[i]); }); a_hash.ComputeChars(ar.Take(100).ToArray()); a_row.CharsSpeed = Measure(ar.Length * 2, () => { a_hash.ComputeChars(ar); }); } } { if (a_bFast) { short[] ar = (from n in Enumerable.Range(0, length / 2) select (short)r.Next()).ToArray(); a_hash.ComputeShort(ar[0]); a_row.ShortSpeed = Measure(ar.Length * 2, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeShort(ar[i]); }); a_hash.ComputeShorts(ar.Take(100).ToArray()); a_row.ShortsSpeed = Measure(ar.Length * 2, () => { a_hash.ComputeShorts(ar); }); } } { if (a_bFast) { ushort[] ar = (from n in Enumerable.Range(0, length / 2) select (ushort)r.Next()).ToArray(); a_hash.ComputeUShort(ar[0]); a_row.UShortSpeed = Measure(ar.Length * 2, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeUShort(ar[i]); }); a_hash.ComputeUShorts(ar.Take(100).ToArray()); a_row.UShortsSpeed = Measure(ar.Length * 2, () => { a_hash.ComputeUShorts(ar); }); } } { if (a_bFast) { int[] ar = (from n in Enumerable.Range(0, length / 4) select r.Next()).ToArray(); a_hash.ComputeInt(ar[0]); a_row.IntSpeed = Measure(ar.Length * 4, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeInt(ar[i]); }); a_hash.ComputeInts(ar.Take(100).ToArray()); a_row.IntsSpeed = Measure(ar.Length * 4, () => { a_hash.ComputeInts(ar); }); } } { if (a_bFast) { uint[] ar = (from n in Enumerable.Range(0, length / 4) select (uint)r.Next()).ToArray(); a_hash.ComputeUInt(ar[0]); a_row.UIntSpeed = Measure(ar.Length * 4, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeUInt(ar[i]); }); a_hash.ComputeUInts(ar.Take(100).ToArray()); a_row.UIntsSpeed = Measure(ar.Length * 4, () => { a_hash.ComputeUInts(ar); }); } } { if (a_bFast) { long[] ar = (from n in Enumerable.Range(0, length / 8) select (long)(((ulong)r.Next() + (ulong)r.Next() * (ulong)Math.Pow(2, 32)))).ToArray(); a_hash.ComputeLong(ar[0]); a_row.LongSpeed = Measure(ar.Length * 8, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeLong(ar[i]); }); a_hash.ComputeLongs(ar.Take(100).ToArray()); a_row.LongsSpeed = Measure(ar.Length * 8, () => { a_hash.ComputeLongs(ar); }); } } { if (a_bFast) { ulong[] ar = (from n in Enumerable.Range(0, length / 8) select ((ulong)r.Next() + (ulong)r.Next() * (ulong)Math.Pow(2, 32))).ToArray(); a_hash.ComputeULong(ar[0]); a_row.ULongSpeed = Measure(ar.Length * 8, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeULong(ar[i]); }); a_row.ULongsSpeed = Measure(ar.Length * 8, () => { a_hash.ComputeULongs(ar); }); } } { if (a_bFast) { float[] ar = (from n in Enumerable.Range(0, length / 8) select (float)(r.NextDouble() * r.Next())).ToArray(); a_hash.ComputeFloat(ar[0]); a_row.FloatSpeed = Measure(ar.Length * 4, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeFloat(ar[i]); }); a_hash.ComputeFloats(ar.Take(100).ToArray()); a_row.FloatsSpeed = Measure(ar.Length * 4, () => { a_hash.ComputeFloats(ar); }); } } { if (a_bFast) { double[] ar = (from n in Enumerable.Range(0, length / 8) select r.NextDouble() * r.Next()).ToArray(); a_hash.ComputeDouble(ar[0]); a_row.DoubleSpeed = Measure(ar.Length * 8, () => { for (int i = 0; i < ar.Length; i++) a_hash.ComputeDouble(ar[i]); }); a_hash.ComputeDoubles(ar.Take(100).ToArray()); a_row.DoublesSpeed = Measure(ar.Length * 8, () => { a_hash.ComputeDoubles(ar); }); } } { if (a_bFast) { byte[] a = new byte[length]; r.NextBytes(a); string ar = new String((from b in a select (char)(b / 2 + 32)).ToArray()); a_hash.ComputeString(ar.Substring(0, 100)); a_row.StringSpeed = Measure(ar.Length * 2, () => { a_hash.ComputeString(ar); }); } } }