암호화 - teamGreenGreen/CookieRunAPIServer GitHub Wiki
입력 받은 비밀번호는 평문으로 저장하지 않고 솔트 값을 더해서 해싱한 결과를 저장한다.
해싱된 값에서 원본 문자열을 알아내는 것을 방지하기 위해서 비밀번호에 랜덤 문자열(솔트)을 덧붙여서 해시 함수를 적용.
솔트
솔트 값은 64자리의 랜덤 생성된 값을 사용한다.
public static string GenerateSaltString()
{
byte[] bytes = new byte[32];
using (RandomNumberGenerator randGenerator = RandomNumberGenerator.Create())
{
randGenerator.GetBytes(bytes);
}
string hexString = Convert.ToHexString(bytes);
return hexString;
}
해시
public static string GenerateHashingPassword(string saltValue, string password)
{
SHA256 sha = SHA256.Create();
byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(saltValue + password));
// 해시로 생성한 바이트의 자리수를 맞추기 위해서 2자리수인 16진수로 변환
string hexString = Convert.ToHexString(hash);
return hexString;
}