티스토리 뷰
암호화 방법 몇 가지...
사용하기전 using System.Security.Cryptography; 추가
// MD5 암호화 128bit 암호화
public static string MD5Hash(string Data)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(Data));
StringBuilder stringBuilder = new StringBuilder();
foreach (byte b in hash)
{
stringBuilder.AppendFormat("{0:x2}", b);
}
return stringBuilder.ToString();
}
// SHA256 256bit 암호화
public static string SHA256Hash(string Data)
{
SHA256 sha = new SHA256Managed();
byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));
StringBuilder stringBuilder = new StringBuilder();
foreach (byte b in hash)
{
stringBuilder.AppendFormat("{0:x2}", b);
}
return stringBuilder.ToString();
}
// SHA 384
public static string SHA384Hash(string Data)
{
SHA384 sha = new SHA384Managed();
byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));
StringBuilder stringBuilder = new StringBuilder();
foreach (byte b in hash)
{
stringBuilder.AppendFormat("{0:x2}", b);
}
return stringBuilder.ToString();
}
//SHA512 512bit 암호화
public static string SHA512Hash(string Data)
{
SHA512 sha = new SHA512Managed();
byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));
StringBuilder stringBuilder = new StringBuilder();
foreach (byte b in hash)
{
stringBuilder.AppendFormat("{0:x2}", b);
}
return stringBuilder.ToString();
}
기본적인 방법은 모든 암호화 방식이 같다.
다만 생성시키는 객체가 MD5냐 SHA냐의 차이일뿐
C#과 SQLSERVER의 문자가 UniCode냐 ASCII인지를 잘 알고 써야
클라이언트와 서버간의 암호화 문자를 가지고 통신을 할수 있다.
C#이 ASCII로 받아들여 암호화 한것과 SQLSERVER이 UniCode로 받아들여 암호화한것은 완전 다른 암호 문자열이 만들어진다.(DB의 암호화 문자열이 C#에서 전송하여 저장된것이 아닌 DB안에서 만들어진 암호일경우)
고로 C#에서 비밀번호를 암호화 할때 DB서버와 인코딩 방식을 같게 해주어야 이상한 에러 없이 잘 쓸수 있을듯...
[출처] MD5, SHA 암호화 (c#)|작성자 정각
'Programming > .Net' 카테고리의 다른 글
C#에서 이벤트 순서(그리드 : Click Event 와 EnterCell Event) (0) | 2013.01.22 |
---|---|
AutoShutDown V0.5 (0) | 2013.01.03 |
오버로드와 오버라이드의 차이점(overload & override) (0) | 2011.09.22 |
C# 확장 메서드 (0) | 2011.09.21 |
C# AS의 역할 (0) | 2011.09.21 |