pondelok, 28 november 2011 09:47 Written by 5023 times
Rate this item
(2 votes)

C# Security – HASH

Hash metóda je jednosmerné šifrovanie,to znamená,že spätný algoritmus neexistuje .Táto šifrovanie je ideálna pre ukladanie hesiel v databáze.
Hash kód ma vždy pevnú veľkosť bez ohľadu na dĺžku vstupných dát.

Môžeme ho použiť napr. ako kontrolný súčet. Rovnaké slovo bude mať rovnaký HASH kód.
MD5 - 16B (32 bitov), SHA1 - 20B (160 bitov), SHA256 - 32B (256 bitov), SHA384 - 48B (384 bitov), SHA512 - 64B (512 bitov)

SHA1 v C#

 private byte[] Hash(byte[] data)
{   
       SHA1 sha = new SHA1CryptoServiceProvider();           
       return sha.ComputeHash(data);   
}

SHA256 v C#

 private byte[] Hash2(byte[] data)
{
   SHA256 shaM = new SHA256Managed();
   return shaM.ComputeHash(data);
}

Convert string na byte[ ] v C#

public static byte[] StrToByteArray(string str)
{
   System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
   return encoding.GetBytes(str);
} 

Použitie v C#

byte[] vystupneDataBytes;
byte[] vstupneDataBytes;
string vstupneData;
vstupneData ="www.projectik.eu";//vstup je string
vstupneDataBytes = StrToByteArray(data);//Convertujeme na pole byteov
vystupneDataBytes = Hash(vstupneDataBytes);//Vystupny HASH kod

 

MD5 na string v C#

private string hashMD5String(string value)
{
	MD5 md5Hasher = MD5.Create();
	byte[] data =Encoding.ASCII.GetBytes(value);
	byte[] hashData = md5Hasher.ComputeHash(data);
	string ret = "";
	for (int i = 0; i < hashData.Length; i++)
		ret += hashData[i].ToString("x2").ToLower();
	return ret;
}

K prevodu byte[]  na string môžeme použiť aj napr . BitConverter , potom zdrojový kód bude vyzerať nasledovne :

private string hashString(string value)
{
	MD5 md5Hasher = MD5.Create();
	byte[] data =Encoding.ASCII.GetBytes(value);
	byte[] hashData = md5Hasher.ComputeHash(data);
	return BitConverter.ToString(hashData); 
}
Last modified on streda, 30 január 2013 18:08
Ing.Jaroslav Vadel

Som zakladateľom www.projectik.eu.

Hrám sa na programátora, ktorý ovláda:

c#,cpp,java,unity3d,php,html,NI testand,NI Vision Builder,Cognex In-Sight,NI LabView

"Naprogramovať program, ktorý funguje vie každy. Ale to, že program funguje ešte neznamena, že je napísany správne "

Website: www.projectik.eu