SOFTWARE
STRCrypt
Secure Trusted Rust Cryptography
One implementation covers eight Korean and international standard algorithms, so ciphertext written in one language opens in another.
Evaluation packages and deployment options are available on request.
Architecture
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
- Review the evaluation package and operating guide
- Connect the Python, Node.js, or Java binding
- Select mode —
KcmvpApprovedfor environments applying Korean KCMVP, otherwiseNonApproved - Apply batch encryption or file streaming
Resources
Evaluation packages and technical materials are provided after reviewing your requirements.
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.