#硬件加速 #目标 #数据 #操作 #加密解密 #aes128cbc

no-std eaesy

在嵌入式目标上对任意数据进行简单的硬件加速 AES128CBC 操作

2 个版本

0.2.1 2020 年 3 月 14 日
0.2.0 2020 年 3 月 8 日

#16 in #硬件加速

MIT/Apache

14KB
157

eAESy — 在嵌入式目标上对任意数据进行简单的硬件加速 AES128CBC 操作

此 crate 提供了一个 trait,用于在具有可用支持的可用的 no-std 目标上进行硬件加速的 AES-128-CBC 加密/解密。作为后备方案,对于缺少密码学引擎的目标,可以使用软件实现。通过 PKCS7 填充支持任意输入长度。

目前,此 crate 在以下目标上使用密码学引擎

  • NXP S32K144EVB-Q100 (s32k144evb-q100 功能)

许可证

许可协议为以下之一

任选其一。


lib.rs:

此 crate 提供了一个 trait,用于在具有可用支持的可用的 no-std 目标上进行硬件加速的 AES-128-CBC 加密/解密。作为后备方案,对于缺少密码学引擎的目标,可以使用软件实现。通过 PKCS7 填充支持任意输入长度。

目前,此 crate 在以下目标上使用密码学引擎

  • NXP S32K144EVB-Q100 (s32k144evb-q100 功能)

实现预期在预分配的缓冲区中加密/解密数据。

示例用法

#[macro_use]
extern crate hex_literal;

use easy::{aes128cbc::AES128Cbc, default::SoftwareAES};

// ...

let key = hex!("000102030405060708090a0b0c0d0e0f");
let iv = hex!("f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff");
let plaintext = b"Hello world!";

let pos = plaintext.len();
let buffer = [0; 16]; // must be a multiple of 16B; round up to account for padding
buffer[..pos].copy_from_slice(plaintext);

let mut aes = SoftwareAES::new(); // arguments to `new` will depend on implementation used
let _ciphertext = aes.encrypt(key, iv, &mut buffer, pos).unwrap()l;
let decrypted_ciphertext = aes.decrypt(key, iv, &mut buffer).unwrap();

assert_eq!(plaintext, decrypted_ciphertext);

依赖项

~0–4.5MB
~161K SLoC