pub struct Codec { /* private fields */ }
Expand description
Core encoder/decoder.
Implementations§
Source§impl Codec
impl Codec
Sourcepub fn new(name: &str, config: &Config<'_>) -> Codec
pub fn new(name: &str, config: &Config<'_>) -> Codec
Creates a new Codec
instance with the given name and key.
The name
is used as a prefix in the encoded output and to derive a prefix-specifc
key together with the master key
.
Security note: In order to be secure, you must provide a secure random key
with sufficient entropy, and manage it appropriately.
§Arguments
name
- A string slice that holds the name of the codec.key
- A byte slice that holds the master key for encryption and MAC.
§Returns
A new instance of Codec
.
§Examples
use cryptid_rs::{Config, Codec};
let codec = Codec::new("example", &Config::new(b"your-secure-key"));
Sourcepub fn encode(&self, num: u64) -> String
pub fn encode(&self, num: u64) -> String
Encodes a given numeric value into a secure string representation.
This method applies format-preserving encryption to the number and then encodes it into a base62 string with a prefix. It also appends an HMAC for integrity verification.
§Arguments
num
- The 64-bit unsigned integer to be encoded.
§Returns
A Result
which is Ok
containing the encoded string if successful,
or an Error
if encoding fails.
§Examples
use cryptid_rs::{Codec, Config};
let codec = Codec::new("example", &Config::new(b"your-secure-key"));
let encoded = codec.encode(12345);
assert_eq!(encoded, "example_VgwPy6rwatl");
Sourcepub fn encode_uuid(&self, num: u64) -> Uuid
pub fn encode_uuid(&self, num: u64) -> Uuid
Encrypts num
into an UUID.
Sourcepub fn decode(&self, encoded: &str) -> Result<u64, Error>
pub fn decode(&self, encoded: &str) -> Result<u64, Error>
Decodes a previously encoded string back into its original numeric value.
This method first verifies the integrity of the encoded data using HMAC, and then applies format-preserving decryption to retrieve the original number. It expects the encoded data to start with the correct prefix.
§Arguments
encoded
- A string slice representing the encoded data.
§Returns
A Result
which is Ok
containing the decoded 64-bit unsigned integer if successful,
or an Error
if decoding fails.
§Examples
use cryptid_rs::{Codec, Config};
let codec = Codec::new("example", &Config::new(b"your-secure-key"));
let decoded = codec.decode("example_VgwPy6rwatl").unwrap();
assert_eq!(decoded, 12345);
Auto Trait Implementations§
impl Freeze for Codec
impl RefUnwindSafe for Codec
impl Send for Codec
impl Sync for Codec
impl Unpin for Codec
impl UnwindSafe for Codec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoSql for T
impl<T> IntoSql for T
Source§fn into_sql<T>(self) -> Self::Expression
fn into_sql<T>(self) -> Self::Expression
self
to an expression for Diesel’s query builder. Read moreSource§fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
&self
to an expression for Diesel’s query builder. Read more