px普贤教程PuXian
普贤教程 › 包参考

aescbc 包

AES-CBC / AES-CTR

项值
包名aescbc
版本0.2.0
可用版本0.1.0 / 0.2.0
入口aescbc.px
分类认证与安全
文件数 / 行数1 / 180

安装与引入

bash
pxpkg init          # 首次
pxpkg add aescbc@0.2.0
pxpkg install
px
import aescbc
所属分类教程:认证与安全

公开接口

函数参数
aes_to_bytesv
aes_to_listb
aes_hexdata
aes_unhexh
aes_xora, b
aes_pkcs7_paddata, block
aes_pkcs7_unpaddata
aes_cbc_encryptkey, iv, data
aes_cbc_decryptkey, iv, ct
aes_cbc_decrypt_okkey, iv, ct
aes_ctr_cryptkey, nonce, data
其余 5 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
_aes_ctr_blocknonce, counter
_aes_ctr_keystreamkey, nonce, counter
_aes_xor_bytesa, b
_aes_pkcs7_paddata, block_size
_aes_pkcs7_unpaddata

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/aescbc — AES-CBC / AES-CTR
------------------------------------------------------------
纯函数库,双模式一致(px run / px build 结果相同)。

实现上用内建 bytes 版(任意二进制、不做 UTF-8 校验):
aes_encrypt_bytes(data, key, iv) → bytes   # CBC-PKCS7 加密
aes_decrypt_bytes(ct, key, iv)   → bytes | null  # padding 非法 → null
aes_encrypt_ecb_bytes(data, key) → bytes   # ECB-PKCS7(CTR 取 keystream 用)

公开函数:
aes_cbc_encrypt(key, iv, data)      → bytes           # CBC-PKCS7
aes_cbc_decrypt(key, iv, ct)        → bytes | null    # null = padding 非法
aes_cbc_decrypt_ok(key, iv, ct)     → Ok(bytes) | Err(msg)
aes_ctr_crypt(key, nonce, data)     → bytes           # CTR 加解密同一函数
aes_xor(a, b)                       → bytes           # 等长 XOR
aes_pkcs7_pad(data, block)          → bytes           # 16 字节块 PKCS#7 填充
aes_pkcs7_unpad(data)               → bytes | null
aes_to_bytes(v) / aes_to_list(b)    → 类型互转(bytes / list[int] / string)
aes_hex(data) / aes_unhex(hex)      → 十六进制互转

参数口径:key / iv / data 都可用 bytes、list[int] 或 string(内部统一转 bytes)。
key 16/24/32 字节 → AES-128/192/256;iv 固定 16 字节;nonce 12 字节(补 4 字节
大端计数器)或 16 字节(当作初始计数器块,自增末 4 字节)。

需要 list[int] 时用 aes_to_list(结果)。
============================================================