.
목 차
Hashkey
사실 처음에는 딱히 보안을 추구할 생각이 없었다. 그냥 신나게 맵 만들고 대강대강 클리커 흉내만 내고 싶었을 뿐이다. 하지만, 혹시 PlayerPrefs가 저장할 때 String값을 키값으로 하는데 애니메이션처럼 이걸 hash로 바꾸면 비용이 줄어드나 라는 의문점에서 hash로 저장하기를 시작했다.
Hash로 막상 변환을 끝내고 조금 검색해보니 사실 내가 의미없는 짓을 했다는걸 그제야 깨달았다. 어차피 키값이고 Dictionary라 이 방식은 딱히 더 효율적이지는 않다는 것이다.
하지만 만든게 아깝기 때문에 보안때문에 이렇게 만든 척 하기로 했다.
현재의 코드에 조금 더해서 약간의 보안이 가미된 저장법을 만들었다.
SHA-256 해시 알고리즘
SHA-256의 특징:
- 고정된 길이 출력
- 암호학적 강도
- 단방향 함수
- 광범위한 사용
코드는 다음과 같은데, 어디선가 코드스니펫을 가져온거라 아직 완벽히 이해는 못했다...
즉 여기 써 있는 것 외의 내용은 아직 잘 모르게따!
//SHA256 인스턴스 생성 -> 이 객체의 해시 알고리즘 이용.
using (SHA256 sha256Hash = SHA256.Create())
{
//UTF-8 인코딩으로 바이트 배열로 string 키값 변환. -> 32바이트 길이의 배열이 됨.
byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(key));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
//각 바이트를 16진수 문자열로 변환.
builder.Append(bytes[i].ToString("x2"));
}
//16진수로 이루어진 StringBuilder를 String으로 변환해 반환.
return builder.ToString();
}
SALT 값 더하기
현재의 KEY값에 임의의 문자열을 더해서 변환하면 보안을 한층 더 높일 수 있다!
사실 아직은 잘 모르겠다. 암호학... 어려워... 다음은 예시다.
string salt = "WRITEsomething여기";
string saltedKey = key + salt; //key값에 더하기
아마도 salt인 이유는 요리에 소금을 뿌려 완성하듯이 소금을 뿌려 key값을 추정하기 힘들게 하는 것 같다. 공백, 영어 대소문자, 기호, 외국어 등을 모두 섞어써도 된다고 한다.
'내일배움캠프 > [P8-Solo.] Clicker?Clicker!' 카테고리의 다른 글
[TIL 24.06.18] Unity로 Swipe 입력받기 (0) | 2024.06.18 |
---|