webbuf_aescbc

Crates.iowebbuf_aescbc
lib.rswebbuf_aescbc
version0.15.0
created_at2025-12-06 16:40:50.073429+00
updated_at2025-12-13 13:43:53.462089+00
descriptionWebBuf AES-CBC library
homepage
repositoryhttps://github.com/identellica/webbuf
max_upload_size
id1970406
size1,148,082
Ryan X. Charles (ryanxcharles)

documentation

README

webbuf_aescbc

AES-CBC encryption and decryption for Rust and WebAssembly.

Note: This library does not provide message authentication. Combine with HMAC or a MAC for authenticated encryption.

Installation

[dependencies]
webbuf_aescbc = "0.13"

Usage

use webbuf_aescbc::aescbc::{aescbc_encrypt, aescbc_decrypt};

// AES-256-CBC encryption
let key = [0u8; 32];  // 32 bytes for AES-256 (or 16 for AES-128, 24 for AES-192)
let iv = [0u8; 16];   // IV must always be 16 bytes
let plaintext = b"Hello, world!";

// Encrypt
let ciphertext = aescbc_encrypt(plaintext, &key, &iv).unwrap();

// Decrypt
let decrypted = aescbc_decrypt(&ciphertext, &key, &iv).unwrap();
assert_eq!(decrypted, plaintext);

API

Function Description
aescbc_encrypt(plaintext: &[u8], key: &[u8], iv: &[u8]) -> Result<Vec<u8>, String> Encrypt with AES-CBC and PKCS#7 padding
aescbc_decrypt(ciphertext: &[u8], key: &[u8], iv: &[u8]) -> Result<Vec<u8>, String> Decrypt AES-CBC with PKCS#7 unpadding

Key Sizes

  • AES-128: 16-byte key
  • AES-192: 24-byte key
  • AES-256: 32-byte key

The IV must always be 16 bytes.

WebAssembly

Build with the wasm feature for WebAssembly support:

[dependencies]
webbuf_aescbc = { version = "0.13", features = ["wasm"] }

The TypeScript wrapper is available as @webbuf/aescbc on npm.

License

MIT

Commit count: 0

cargo fmt