Overview
com.111percent.scripting.percent-encryption
이게 뭔가요?
AES 암호화 기능을 제공하는 패키지 입니다.
기본적으로 Json 직렬화 값을 암호화 및 복호화 하려는 목적으로 제작된 패키지입니다.
- 필요에 따라 NatvieAlloc
형식으로 사용할 수 있습니다. (Unsafe)
왜 필요한가요?
문자열 또는 직렬화된 게임 데이터, 데이터 테이블 등 외부에 공유하기 어려운 자료를 숨기기 위함으로 사용합니다.
- 게임의 저장파일 또는 환경설정 파일을 보호합니다.
- 로컬에서 사용되는 압축된 데이터를 보호합니다.
어떻게 사용하나요?
1. 문자열 암호화
아래 예시에서는 문자열 형식을 암호화 합니다.
using System.Security.Cryptography;
// 암호화시 고유한 키 값을 넣고싶은 경우 AesCryptoService.PublicKey 매개변수에 넣어주세요.
// 만약 내장된 키 값을 사용하려는 경우 AesCryptoService.PublicKey 변수를 사용해주세요.
var str = "내가 암호화 하고싶은 문자열 또는 직렬화된 문자열 등등...";
var value = AesCryptoService.EncryptBase64String(str, AesCryptoService.PublicKey);
2. 문자열 복호화
아래 예시에서는 암호화된 문자열 형식을 복호화 합니다.
using System.Security.Cryptography;
// 암호화시 고유한 키 값을 넣고싶은 경우 AesCryptoService.PublicKey 매개변수에 넣어주세요.
// 만약 내장된 키 값을 사용하려는 경우 AesCryptoService.PublicKey 변수를 사용해주세요.
var str = "5VQGDAsk8G2YLK15KxKa1gSA9ctRKMfHH37V1..."; // 임의로 작성한 문자열 입니다.
var value = AesCryptoService.DecryptBase64String(str, AesCryptoService.PublicKey);
3. Percent Memory 패키지를 사용한 암호화
아래 예시에서는 파일이나 이진파일을 읽고 바이트 배열을 암호화합니다.
using System.Security.Cryptography;
using System.Runtime.InteropServices; // NativeAlloc<byte> 자료형을 사용하기위한 네임스페이스
byte[] bytes = ... // 데이터가 들어있다 가정합니다.
// 데이터 형식을 Span<byte> 형식으로 변경하여 암호화를 시도합니다.
using var value = AesCryptoService.NonAllocEncryptBytes(bytes.AsSpan(), AesCryptoService.PublicKey);
// 암호화된 데이터를 사용합니다.
1. 문자열 형태의 암호화 및 복호화
아래 예시에서는 문자열을 Span
using System.Text;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
var str = "Hello World";
// Span<char> 형식으로 변환한 후 암호화된 NativeAlloc<byte> 형식을 반환합니다.
using var enc = AesCryptoService.NonAllocEncryptBytes(str.AsSpan(), AesCryptoService.PublicKey);
// NativeAlloc<byte> 형식에서 Span<Byte> 형식으로 전환한 후 복호화된 NativeAlloc<byte> 형식을 반환합니다.
using var dec = AesCryptoService.NonAllocDecryptBytes(enc.AsSpan(), AesCryptoService.PublicKey);
// NativeAlloc<byte> 형식을 Span<byte> 형식으로 변환한 후 문자열을 생성합니다.
var value = Encoding.UTF8.GetString(dec.AsSpan());