암호화(MD5, SHA256, SHA512, SHA384)
암호화 방법 몇 가지...
사용하기전 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#)|작성자 정각