Skip to main content

SOFTWARE

STRCrypt

Secure Trusted Rust Cryptography

One implementation covers eight Korean and international standard algorithms, so ciphertext written in one language opens in another.

0.xRust Core + Python, Node.js, Java Bindings · MIT

Evaluation Request an evaluation package

Evaluation packages and deployment options are available on request.

Architecture

ArchitectureThe Rust core provides shared encryption functions to the CLI, language bindings, and RDBMS SQL functions. Each operating mode limits the permitted algorithms.
Pinch or scroll to zoom · drag to pan · double-tap or double-click to reset

Overview

STRCrypt provides Korean and international standard encryption algorithms through one Rust-based API. Distribution options are provided after a requirements review under the MIT License.

Applications

It simplifies algorithm integration and ciphertext compatibility across Python, Node.js, and Java in public-sector and enterprise environments using both Korean and international standards.

Usage

The CLI and Python, Node.js, and Java bindings use the same algorithms and ciphertext format. AAD, batch processing, and file streaming are available through each interface.

CLI

# Generate and register a 32-byte key (release build required)
export STRCRYPT_KEY="$(openssl rand -base64 32 | head -c 32)"

# Check hardware, supported algorithms, and key status
strcrypt info

# Encrypt specifying the algorithm (Default output file: strcrypt_enc.bin)
strcrypt -a aria256gcm encrypt "Hello"

# Decrypt from file (Auto-detect algorithm)
strcrypt decrypt --from-file -i strcrypt_enc.bin

Python

import strcrypt

# Basic encryption/decryption (default algorithm for the current operating mode)
ct = strcrypt.encrypt("Hello")
pt = strcrypt.decrypt(ct)

# Specify algorithm and AAD
ct = strcrypt.encrypt_with_algorithm_and_aad(
    "Hello", "aria256gcm", b"context"
)

# Batch / Parallel batch
enc = strcrypt.encrypt_batch(["msg1", "msg2"])
enc = strcrypt.encrypt_batch_parallel(["msg1", "msg2"])

Node.js

const strcrypt = require('strcrypt');

// Basic encryption/decryption
const ct = strcrypt.encrypt("Hello");   // Base64 string
const pt = strcrypt.decrypt(ct);             // string

// Specify algorithm and AAD
const enc = strcrypt.encryptWithAlgorithmAndAad(
  "Hello", "aria256gcm", Buffer.from("ctx")
);

// Batch / Parallel batch
const arr = strcrypt.encryptBatch(["msg1", "msg2"]);
const par = strcrypt.encryptBatchParallel(["msg1", "msg2"]);

Java

import com.strcrypt.StrCrypt;
import java.util.Arrays;
import java.util.List;

// Basic encryption/decryption
String ct = StrCrypt.encrypt("Hello");
String pt = StrCrypt.decrypt(ct);

// Specify algorithm and AAD
String enc = StrCrypt.encryptWithAlgorithmAndAad(
    "Hello", "aria256gcm", "ctx".getBytes()
);

// Batch / Parallel batch
List<String> arr = StrCrypt.encryptBatch(
    Arrays.asList("msg1", "msg2")
);

Full API and operating instructions are provided during an adoption review.

Supported Algorithms (8)

Algorithms Subject to KCMVP Validation (3)

  • ARIA-256-GCM GCM authenticated encryption based on a Korean standard
  • SEED-128-GCM GCM authenticated encryption based on a Korean standard
  • LEA-128-GCM GCM authenticated encryption based on a lightweight Korean cipher

International Standards (5)

  • AEGIS-128L IETF CFRG authenticated encryption with AES-NI acceleration
  • AEGIS-256 IETF CFRG authenticated encryption with a 256-bit key
  • AES-256-GCM NIST/FIPS standard with hardware acceleration
  • AES-256-GCM-SIV Authenticated encryption resilient to nonce reuse
  • ASCON-128 NIST SP 800-232 lightweight cryptography standard

During decryption, the algorithm is automatically detected from the ciphertext header.

One Algorithm Choice, the Same Result in Four Places

You do not need a separate crypto module in every language. One engine is used the same way from the CLI and from Python, Node.js, and Java.

Algorithms choosing one

  • Mode separation — Korean standard mode and international algorithm mode are applied separately, following your operating policy.
  • Key wrapping — Keys are wrapped for storage using RFC 3394 and 5649.

Processing putting it to work

  • Processing shapes — Buffers, batches, parallel batches, and file streaming are all handled the same way.
  • Additional authenticated data (AAD) — Lets you attach a value that is checked for tampering alongside the payload.
  • Single binary — The same binary ships whether or not the system supports AES-NI.

Safety keeping it sound

  • Self-tests — Cryptographic functions are tested and module integrity is checked at startup.
  • Memory clearing — Keys and sensitive data are wiped from memory after use.

Product Specifications

Version
0.x
License
MIT
Platform
Linux · macOS · Windows
Language Bindings
Python, Node.js, Java (Native bindings)
Core
Native Rust
Processing Performance
Selects the processing path by hardware acceleration and data size
Binding Compatibility
A common ciphertext format across Python, Node.js, and Java

Security & Standards

License
MIT · Commercial use and redistribution permitted
Korean Standards
Algorithms subject to KCMVP validation · ARIA-256-GCM, SEED-128-GCM, LEA-128-GCM
International Standard
NIST/FIPS, IETF CFRG, NIST SP 800-232, RFC 8452
Operation Mode
KcmvpApproved (Korean standard only), NonApproved (International standard)
Module Certification
KCMVP module certification not acquired · Separate review required where certification is mandatory
Verification
Automated tests, benchmarks, and fuzz testing
Technical Support
Distribution and vulnerability patch support available with adoption

Getting Started

  1. Review the evaluation package and operating guide
  2. Connect the Python, Node.js, or Java binding
  3. Select mode — KcmvpApproved for environments applying Korean KCMVP, otherwise NonApproved
  4. Apply batch encryption or file streaming

Resources

Evaluation packages and technical materials are provided after reviewing your requirements.

Request resources

Considering Cubiware for your organization?

We will guide you through setup and rollout tailored to your requirements and operating environment. Reach out for a demo or a proposal.

Click the image for actual size · click outside or press Esc to close