| Crates.io | cryptrsa |
| lib.rs | cryptrsa |
| version | 0.1.3 |
| created_at | 2025-06-08 07:58:47.681795+00 |
| updated_at | 2025-08-11 09:21:24.158702+00 |
| description | RSA encryption and signing CLI tool |
| homepage | https://github.com/neuralsorcerer/cryptrsa |
| repository | https://github.com/neuralsorcerer/cryptrsa |
| max_upload_size | |
| id | 1704688 |
| size | 68,108 |
A small Rust CLI/library that demonstrates RSA primitives for learning, and provides secure flows using OAEP (encryption), PSS (signing), and a hybrid RSA+AES-GCM scheme for large files.
cargo install cryptrsa
git clone https://github.com/neuralsorcerer/cryptrsa
cd cryptrsa
cargo build
cryptrsa gen --bits 2048 --out keypair.json --public-out public.json
cryptrsa encrypt --key public.json --message "hello"
cryptrsa decrypt --key keypair.json --ciphertext BASE64
cryptrsa encrypt-bytes --key public.json --in-file input.bin --out-file cipher.b64
cryptrsa decrypt-bytes --key keypair.json --in-file cipher.b64 --out-file output.bin --base64
cryptrsa gen-pem --bits 2048 --private-out private.pem --public-out public.pem
cryptrsa encrypt-oaep --public-pem public.pem --in-file msg.bin --out-file ct.b64
cryptrsa decrypt-oaep --private-pem private.pem --in-file ct.b64 --out-file msg.bin
cryptrsa sign-pss --private-pem private.pem --in-file msg.bin --sig-out sig.b64
cryptrsa verify-pss --public-pem public.pem --in-file msg.bin --sig-file sig.b64
cryptrsa encrypt-hybrid --public-pem public.pem --in-file large.bin --out-file package.json
cryptrsa decrypt-hybrid --private-pem private.pem --in-file package.json --out-file large.bin
use cryptrsa::{RSAKeyPair, encrypt, decrypt};
use num_bigint::BigUint;
let kp = RSAKeyPair::generate(1024);
let m = BigUint::from(42u32);
let c = encrypt(&m, &kp.e, &kp.n);
let p = decrypt(&c, &kp.d, &kp.n);
assert_eq!(m, p);
use cryptrsa::RsaOaep;
let kp = RsaOaep::generate(2048)?;
let ct = kp.encrypt(b"secret")?;
let pt = kp.decrypt(&ct)?;
assert_eq!(pt, b"secret");
let sig = kp.sign_pss(b"msg")?;
assert!(kp.verify_pss(b"msg", &sig)?);
use cryptrsa::crypto::hybrid::{gen_random_key, encrypt_aes_gcm, decrypt_aes_gcm};
let key = gen_random_key();
let (ct, nonce) = encrypt_aes_gcm(&key, b"data")?;
let pt = decrypt_aes_gcm(&key, &ct, &nonce)?;
assert_eq!(pt, b"data");
This project is licensed under the MIT License - see the LICENSE file for details.