참고 URL
http://support.microsoft.com/kb/307010/ko
Md5
http://www.hoons.kr/Lectureview.aspx?key=Lecture&LECCATE_IDX=26&ref=1&lecture_idx=45
SHA1
http://msdn2.microsoft.com/ko-kr/library/system.security.cryptography.sha1(VS.80).aspx
MD5 클래스
MD5 해시 알고리즘의 모든 구현이 상속될 추상 클래스를 나타냅니다.
네임스페이스: System.Security.Cryptography
어셈블리: mscorlib(mscorlib.dll)
해시 함수는 임의의 길이의 이진 문자열을 고정된 길이의 작은 이진 문자열에 매핑합니다. 암호화 해시 함수는 동일한 값에 해시하는 두 개의 다른 입력을 연산적으로 찾지 못하는 속성, 즉 해당 데이터가 일치하면 두 집합의 데이터 해시도 일치하는 속성을 갖습니다. 데이터에 작은 변경이 있으면 해시에 예측할 수 없는 커다란 변경이 발생합니다.
MD5 알고리즘에 대한 해시 크기는 128비트입니다.
MD5 클래스의 :Track('ctl00_rs1_mainContentContainer_cpe58026_c|ctl00_rs1_mainContentContainer_ctl20',this);" href="http://msdn2.microsoft.com/ko-kr/library/tessz10c(VS.80).aspx">ComputeHash 메서드는 해시를 16바이트 배열로 반환합니다. 일부 MD5 구현에서는 32자로 된 16진수 형식의 해시를 생성합니다. 이러한 구현을 사용하려면 ComputeHash 메서드의 반환 값 형식을 16진수 값으로 지정합니다.
예제
다음 코드 예제에서는 문자열의 MD5 해시 값을 계산하고 해시를 32자로 된 16진수 형식의 문자열로 반환합니다. 이 코드 예제에서 만든 해시 문자열은 모든 플랫폼에서 32자로 된 16진수 형식의 해시 문자열을 만드는 모든 MD5 해시 함수와 호환됩니다
using System;
using System.Security.Cryptography;
using System.Text;
class Example
{
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
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 < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
// Verify a hash against a string.
static bool verifyMd5Hash(string input, string hash)
{
// Hash the input.
string hashOfInput = getMd5Hash(input);
// Create a StringComparer an comare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
if (0 == comparer.Compare(hashOfInput, hash))
{
return true;
}
else
{
return false;
}
}
static void Main()
{
string source = "Hello World!";
string hash = getMd5Hash(source);
Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");
Console.WriteLine("Verifying the hash...");
if (verifyMd5Hash(source, hash))
{
Console.WriteLine("The hashes are the same.");
}
else
{
Console.WriteLine("The hashes are not same.");
}
}
}
// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.
-----------------------------------------------------------------------------------------
string hashedPassword =
FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, "MD5");
Response.Write(hashedPassword)
-----------------------------------------------------------------------------------
MD5 md5Hasher = MD5.Create();
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(this.password.Text));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
Response.Write("<br>md5Hasher=" + sBuilder.ToString().ToUpper() );
위의 두개는 결과값이 같습니다. 편한걸로 쓰세요
SHA1 클래스
입력 데이터에 대한 SHA1 해시를 계산합니다.
byte[] data = new byte[DATA_SIZE];
byte[] result;
SHA1 sha = new SHA1CryptoServiceProvider();
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
'C#.NET' 카테고리의 다른 글
base(C# 참조) (3) | 2009.12.29 |
---|---|
app.config 읽기 (0) | 2009.12.23 |
초간단 .NET 날짜간격 구하기 (0) | 2009.12.15 |
[VS 2005,비주얼 스튜디오] 잘못된 바인딩 핸들입니다 (0) | 2009.12.15 |
[MSDN] Control.Invoke 메서드 (Delegate, Object[]) (0) | 2009.12.15 |
DataGridView VirtualMode (0) | 2009.12.14 |
Windows Forms DataGridView 컨트롤에서 가상 모드 구현 (0) | 2009.12.11 |
[MSDN]제네릭 클래스(C# 프로그래밍 가이드) (0) | 2009.12.10 |
[web.Config &구성 검색] DB접속 연결자 등록해놓고 사용하기 (0) | 2009.12.08 |
[Using Data Contracts]wcf로 클래스 데이터 주고 받기 (0) | 2009.12.07 |