본문 바로가기

SOFTWARE

STRCrypt

Secure Trusted Rust Cryptography

STRCrypt는 문자열·파일·DB 컬럼 값을 암복호화하는 MIT 라이선스 라이브러리입니다. CLI, Python·Node.js·Java 바인딩과 DB SQL 함수를 제공하며 공통 암호문 형식을 사용합니다.

0.3.1갱신 2026-09-27MIT · Linux x86_64 · Windows x64

주요 기능

애플리케이션, 배치, DB가 서로 다른 암호화 모듈을 쓰면 한쪽에서 만든 암호문을 다른 쪽에서 복호화하지 못합니다. STRCrypt는 CLI, 언어 바인딩, SQL 함수에 같은 암호문 형식을 사용해 키와 모드가 같으면 서로의 암호문을 복호화합니다.

  • 문자열·컬럼 암복호화 — 언어 바인딩과 Oracle·PostgreSQL·MySQL·MariaDB SQL 함수
  • 파일 암복호화 — 큰 파일을 분할 처리
  • 배치 암복호화 — 여러 레코드를 한 번의 호출로 처리
  • 알고리즘 선택 — ARIA·SEED·LEA 등 8종, 모드별 허용 범위
  • 암호문 호환 — 공통 암호문 형식, 복호화 시 알고리즘 자동 판별
  • 일치 검색 — 암호화 컬럼의 결정적 검색 인덱스

다운로드

0.3.1 (2026-09-27) 배포본입니다. Linux x86_64·Windows x64 실행 파일과 언어 바인딩을 제공합니다. DB 연동은 Linux 전용입니다. Windows 언어 바인딩과 C 공유 라이브러리의 새 함수는 실행 미검증입니다. 버전별 변경 사항은 변경 이력에 있습니다.

0.3.0 이하의 Oracle·PostgreSQL 연동을 설치했다면 0.3.1 보안 공지의 권한 회수 조치를 적용합니다.

CLI

Python

Node.js

Java

Oracle

PostgreSQL

MySQL·MariaDB

  • strcrypt-mysql-0.3.1.tar.gz 연동 소스 (UDF·Makefile·등록 SQL, MySQL·MariaDB 공용). Linux C 공유 라이브러리와 함께 사용 14 KB

C 공유 라이브러리

소스 코드

공통

파일별 SHA-256
5acdc1050e529feafbb58a333ebb3eaab34e107673fe1f7440c26f0dfb6b8b10  strcrypt
e40771bfe04d5cb8eeac4165c4a1d41c11b824fb19602e74696630f18835bc4d  strcrypt.hmac
8658616358f3483a0da3d19f3f855515591de99b52d289cd8bf497032c5966ed  strcrypt.exe
823927850306afca2a91c16f7689f0d81786bab74b75500ff69bd905d0541a31  strcrypt.exe.hmac
25aa998ef34bbdfb2c4be17dd7bc0fb1c20bf96c52a69a9bc03e9c04e3a89339  strcrypt-0.3.1-cp314-cp314-manylinux_2_28_x86_64.whl
e4fe5d52449393041a841ecce4d832f1b64f57ae10cfdaa14c3a4c1e6c02217a  strcrypt-0.3.1-cp314-cp314-win_amd64.whl
8ca77f9060d1ae22b88809132ab2d5eed8525f838cd7f939268657acfef3cc40  strcrypt-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
62a2337ae2a45b2fe643de51e9b6a961c661d642934ee8610a9ba710089ed740  strcrypt-0.3.1-cp313-cp313-win_amd64.whl
cfaf28fa094e9d9262437694a5eae7e02d7e171841b00cd8ca7cd35595d8b8a7  strcrypt-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
4532dd69de8d319eec39c6ea541544bfd9bb7a00da43b168fc71029493c4f8a5  strcrypt-0.3.1-cp312-cp312-win_amd64.whl
1b637c39c63ad96b951993809b5fa2035818fff6d97c2ddfa439145577fc778d  strcrypt-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
a5d4e694e13d3c72f74d57e7dc71104173a2a529bacb5334a0f118cd74a64f3b  strcrypt-0.3.1-cp311-cp311-win_amd64.whl
0912528b38b79529a35df3798ae63f48c8c81c16887f79a52b1f58b52fbddb37  strcrypt-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl
a0199467b323f35d80a7e437b4726d87f6dbfe2930482683291660b191904800  strcrypt-0.3.1-cp310-cp310-win_amd64.whl
85478c6b2a5fe22312de6d7efe9acee60dcfd6cc0ca98b233365b81cf516900a  strcrypt-0.3.1-cp39-cp39-manylinux_2_28_x86_64.whl
453a2b3203ce385f7ea4c7d7cced1289547f9549408b4456390583eae539a4a1  strcrypt-0.3.1-cp39-cp39-win_amd64.whl
77c4fa0da53a38240340555218d1806b581b4a39e879467e0cb07d856464d7bb  strcrypt-0.3.1.tgz
866b9e7e5af1abe723b44df0740a871227e5d61230cdc6483b38f1f568770333  strcrypt-0.3.1.jar
1a6f47a95cdd9e6c8ba3ee5fb55ad0f82f3081ed2e8e3716a990db622d74be6b  libstrcrypt_jni.so
8357b7b9a391bda4755bea19fed92622fab4c943048d8357e0bfc195150b6a5d  strcrypt_jni.dll
fcc558cd7eeaa972651b3a4f976e78199a66d4bbade0d696d7badd693505bcff  strcrypt-oracle-0.3.1.tar.gz
ee7c538f306f3f816fa32d5b2ae04be32dd3aa3edb824fa16c4b659083e656e0  strcrypt-postgresql-0.3.1.tar.gz
14a73d4b20240910b4d1b5cb49b053023c0ee401080a63067a949795b9eed541  strcrypt-mysql-0.3.1.tar.gz
9fe980205265939e321abce976faedd77441dec9b1fc5863ae52ad3fa09142cd  libstrcrypt.so
5309b16947e4930a5e49ffca09e964d37355e4d20187029c21927eaafdf0ea18  libstrcrypt.so.hmac
4db8a506dce1afd63f4a9fbcab1fd1ab53068bf1c58eb5acfc4ee7231f8f06a7  strcrypt.dll
80bddda42cb2b0e28ab6373b7346df30d80885d59871ee1ae3b9622353b200a8  strcrypt.dll.hmac
40a0ec7918ee503e517d9fa7620e3c95e8a68a123fcdbc46f61b6ea0d0a62bbd  strcrypt.dll.lib
f9fd47a59da97482976dbd641659add955a414369592df70b18d2a0adb8aed56  strcrypt.h
21efc5355b0816b93643600c13a7a7c0154672d43abc13c35e7b2c9e09b396fe  strcrypt-0.3.1-src.tar.gz
a72581d68b6be4eb591f5b5e1f68520eb34c86b393157fe2100b5b4c3eb9a064  strcrypt-0.3.1-src.tar.xz
517db1aafe05de8c90e9bb200a8264bbb00a0db4ad128e993dd2e52956ae0086  strcrypt-0.3.1-src.zip
80fba723f2edd01f683ef2192a21bf195269d86265917b70e49d79afabe51ba9  LICENSE
b0fc866c89d2e063cac6c0875e8af36448661cfd04d9adb490ffd5956f1247c0  LICENSE-THIRD-PARTY

체크섬 검증 (다운로드 디렉토리에서 실행)

Linux (bash)

sha256sum -c --ignore-missing SHA256SUMS

Windows (PowerShell)

Get-Content SHA256SUMS | ForEach-Object {
  $hash, $name = $_ -split '\s+', 2
  if (Test-Path $name) {
    if ((Get-FileHash $name -Algorithm SHA256).Hash -eq $hash) { "$($name): OK" } else { "$($name): FAILED" }
  }
}

실행 파일·공유 라이브러리는 첫 초기화 시 .hmac 파일로 손상을 검사합니다. 파일이 없으면 검사를 생략합니다.

Windows 실행 파일·DLL은 Authenticode 미서명입니다. SmartScreen 경고가 발생할 수 있으며 서명된 코드만 허용하는 환경에서는 실행이 제한됩니다.

빠른 시작

  1. 다운로드에서 운영체제·호출 방식에 맞는 파일을 받고 SHA-256을 확인합니다.
  2. 키 파일을 만들고 환경 변수 STRCRYPT_KEY_FILE에 경로를 지정합니다.
  3. 사용 가이드의 설치 절차와 암복호화 예제를 실행합니다.

키 파일 생성

Linux (bash)

(umask 077; openssl rand -base64 32 | head -c 32 > strcrypt.key)
export STRCRYPT_KEY_FILE="$PWD/strcrypt.key"

Windows (PowerShell)

$key = Join-Path $PWD 'strcrypt.key'
$bytes = [byte[]]::new(24)
[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
[IO.File]::WriteAllText($key, [Convert]::ToBase64String($bytes))
icacls $key /inheritance:r /grant:r "$($env:USERNAME):F"
$env:STRCRYPT_KEY_FILE = $key

Linux 키 파일 권한은 0600이 필요합니다. Windows는 파일 권한을 검사하지 않으며, 예제의 icacls 명령으로 접근을 현재 사용자로 제한합니다. STRCRYPT_KEY에 키를 직접 지정할 수 있지만 프로세스 정보에 노출될 수 있어 키 파일을 권장합니다. 키는 첫 암복호화 시 한 번 읽습니다. 교체 후에는 프로세스를 다시 시작합니다. 키 분실 시 복호화할 수 없으므로 키를 별도로 백업합니다.

예제는 base64 문자 32개(192비트 난수)를 생성하며 파일 내용을 그대로 키 바이트로 사용합니다. SEED-128-GCM·LEA-128-GCM·AEGIS-128L·ASCON-128은 앞 16바이트(96비트 난수)를 사용합니다. 기본 알고리즘은 ARIA-256-GCM입니다.

사용 가이드

알고리즘과 동작 모드

기본 모드 korean-standard는 ARIA·SEED·LEA를 허용하며 기본 알고리즘은 ARIA-256-GCM입니다. non-approved는 8종을 허용하며 기본 알고리즘은 AEGIS-128L입니다. 복호화 시 알고리즘은 암호문 헤더에서 자동 판별합니다.

알고리즘식별자표준사용 가능한 모드
ARIA-256-GCMaria256gcm국내 표준korean-standard 기본값
SEED-128-GCMseed128gcm국내 표준korean-standard
LEA-128-GCMlea128gcm국내 표준korean-standard
AEGIS-128Laegis128lIETF CFRG 초안non-approved 기본값
AEGIS-256aegis256IETF CFRG 초안non-approved
AES-256-GCMaes256gcmNISTnon-approved
AES-256-GCM-SIVaes256gcmsivRFC 8452non-approved
ASCON-128ascon128NIST SP 800-232 (Ascon-AEAD128)non-approved

모드는 CLI에서 --mode non-approved, 라이브러리에서는 환경 변수 STRCRYPT_MODE=non-approved로 바꿉니다. korean-standard는 알고리즘 허용 범위를 나타내며 KCMVP 인증을 의미하지 않습니다. 폐기 예정인 kcmvp-approved도 같은 모드로 처리합니다.

일치 검색 인덱스

strcrypt_search_index는 마스터 키와 입력값으로 16진수 64자의 결정적 인덱스를 생성합니다. SQL 함수와 Python·Node.js·Java 바인딩이 같은 결과를 반환합니다. 인덱스를 별도 컬럼에 저장하고 검색값의 인덱스와 비교해 일치 검색합니다. 인덱스 계산에는 마스터 키가 필요합니다. 동일한 값은 같은 인덱스를 가지므로 값의 일치 여부와 빈도가 노출됩니다.

시스템 요구 사항

운영체제
Linux x86_64, glibc 2.28 이상 (예: RHEL·Rocky Linux 8, Debian 10, Ubuntu 20.04 이상) / Windows 10·11 x64
CLI
추가 설치 없음 (Windows VC++ 재배포 패키지 불필요)
Python
3.9~3.14
Node.js
18 이상
Java
11 이상
Oracle
19c·26ai, Oracle Linux 8 이상(glibc 2.28 이상) Linux DB 서버, DB 문자집합 AL32UTF8. 공개 배포 파일은 Oracle Linux 7에서 로드되지 않음
PostgreSQL
Linux DB 서버의 18, 데이터베이스 인코딩 UTF8
MySQL
Linux DB 서버의 8.4, 문자셋 utf8mb4
MariaDB
Linux DB 서버의 11.8, 문자셋 utf8mb4
키
1~32바이트, 32바이트 미만은 0 패딩. 기본 모드 최소 16바이트. 아래 예제는 32바이트 키 파일 생성.

소스 코드

소스에는 코어 라이브러리, Python·Node.js·Java 바인딩, DB 연동 C 래퍼와 설치 SQL이 포함됩니다. Linux 배포본은 rust-toolchain.toml과 Cargo.lock으로 빌드 환경과 의존성 버전을 고정합니다. ZIP·tar.gz·tar.xz는 같은 소스이며 시험 코드·내부 문서·Windows 정적 C 런타임 빌드 설정은 제외합니다.

제한 사항 및 라이선스

  • KCMVP 등 공식 보안 인증을 받은 암호모듈이 아닙니다. 검증필 암호모듈이 필요한 환경에는 맞지 않습니다.
  • 키 보관·백업·교체는 호출 애플리케이션에서 관리합니다. 키 분실 시 암호문을 복구할 수 없습니다.
  • 암호문은 STRCrypt 전용 형식입니다. 다른 암호 라이브러리와 직접 호환되지 않습니다.
  • MIT 라이선스로 무료 제공하며 상업적 사용과 재배포가 가능합니다. 보증은 제공하지 않습니다(LICENSE).
  • 배포 바이너리에 포함된 오픈소스 구성 요소와 각 라이선스는 LICENSE-THIRD-PARTY에 있습니다. 모두 MIT·Apache-2.0·BSD·ISC 계열이며, GPL 계열 구성 요소는 없습니다. Windows 배포본은 Microsoft C 런타임을 정적 링크합니다.
  • 보안 수정은 최신 릴리스에만 제공합니다. 이전 버전의 취약점은 최신 버전으로 올려 해결합니다.
  • 보안 취약점은 문의 양식의 "보안 취약점" 유형으로 신고합니다. 영향 버전·실행 환경·재현 절차를 포함하며 재현 방법은 공개하지 않습니다.
  • 오류·기능 요청은 문의 양식으로 접수합니다.

이미지를 클릭하면 원본 크기 · 바깥 클릭이나 Esc로 닫기