저번엔 기본인 필수 기능을 구현하였습니다. (데이터를 QR코드로 생성)
이번에는 QR코드 생성할 때 입력되는 데이터 값을 SHA-256 알고리즘을 적용시켜
암호화된 데이터를 입력시켜 보겠습니다.
* 솔직히 다른 분들은 1편 수준만 하셔도 무난하게 사용 가능할 듯싶습니다 (저는 프로젝트 이유상 필요하기에...)
입력 데이터를 SHA 해시값으로 암호화시키는 함수 구현은 찾아보니
이미 마이크로소프트에서 제공하는 기능이 있어서 의외로 간단하였습니다.
/// <summary>
/// SHA-256 알고리즘으로 데이터 암호화
/// </summary>
/// <param name="data">암호화할 데이터</param>
/// <returns></returns>
private static string CryptoSHA(string data)
{
var bytes = Encoding.UTF8.GetBytes(data);
var hash = new SHA256CryptoServiceProvider().ComputeHash(bytes);
var encryptedData = new StringBuilder();
foreach(var h in hash) encryptedData.AppendFormat("{0:x2}",h);
return encryptedData.ToString();
}
[암호화 테스트]
private void TestSHA()
{
string testData = "ABCDEFG";
Debug.Log($"Input : {testData}");
Debug.Log($"Encrypt SHA : {EncryptSHA("ABCDEFG")}");
}
[암호화 데이터 => QR코드 생성 테스트]
private void Test()
{
string testData = "ABCDEFG";
string shaData = EncryptSHA(testData);
SaveQRCode(CreateQRCode(shaData),"C:/Users/user/Desktop","CryptoQR");
}
모두 제대로 동작하는 듯합니다.
이제 다음은 QR코드를 대량으로 생산하는 과정까지 작업해 보겠습니다.
근데 대량 생산 작업이라고 해봐야 구현한 기능들을 활용해 유니티 상 UGUI화면으로
인터페이스를 제작하는 수준이라 핵심 기능들은 끝이 난 거 같습니다.
참고 자료:
SHA256 단방향 암호화하기
이글에서는 SHA256 클래스를 통해 데이터를 암호화하는 방법을 설명한다. SHA256 클래스를 사용하려면 Cryptography 네임스페이스를 사용해야한다. using System.Security.Cryptography; Crytography 네임스페이스..
majg.tistory.com
https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.sha256?view=net-6.0
SHA256 Class (System.Security.Cryptography)
Computes the SHA256 hash for the input data.
learn.microsoft.com