[펌] 기본 변수 저장시 암호화
가장 처음 만들었던 게임을 만들고 난 후에 가장 아쉬운 부분은 보안적인 처리가 취약했다는거.
아는 게 너무 없어서 이것저것 서칭해본 결과 아래의 클래스를 프로젝트에 만들어 두었다.
using System;
using System.Collections;
using System.Security.Cryptography;
using System.Text;
public static class SecureConverter
{
private static int xorCode = (UnityEngine.Random.Range(0, 10000) + UnityEngine.Random.Range(0, 10000) + UnityEngine.Random.Range(0, 10000)).GetHashCode();
public static int SecureInt(int data)
{
return data ^ xorCode;
}
public static string SecureString(string data)
{
string newText = "";
for (int i = 0; i < data.Length; i++)
{
int charValue = Convert.ToInt32(data[i]); //get the ASCII value of the character
charValue ^= xorCode; //xor the value
newText += char.ConvertFromUtf32(charValue); //convert back to string
}
return newText;
}
}
private int _abc;
public int abc { get { return SecureConvert.SecureInt(_abc); } set { _abc = SecureConvert.SecureInt(value); } }
어디서든 abc = 300; 과 같은 형태로 저장하면 실제 암호화된 형태로 저장되기 때문에 원시적인 데이터 검색만으로는 실제 메모리 주소를 찾기가 어렵게 된다.
추신. MD5 나 SHA1 같은 것으로 대체하면 더욱 좋을듯. 이는 추후 포스팅~
'Unity3D > Encrypt' 카테고리의 다른 글
[Asset] Obfuscator (2) | 2017.11.17 |
---|---|
[펌] Unity3D Android .dll 난독화 가이드 [Spices.Net] (0) | 2016.10.19 |
[펌] Playerprefs 암호화 (0) | 2016.05.23 |
C# AES 암복호화 알고리즘 (0) | 2014.03.29 |
안드로이드에서 암호화 팁 - 에셋번들 암호화 (0) | 2014.02.28 |