|
1 | 1 | # zcrypto
|
| 2 | + |
| 3 | +**中文** | [**English**](./README.md) |
| 4 | + |
2 | 5 | 一个为受限环境(比如STM32)写的加密相关操作的库。
|
3 | 6 |
|
4 |
| -*支持功能*: |
| 7 | +## 支持功能: |
5 | 8 | * base64
|
6 |
| -* hash |
| 9 | +* 散列函数 |
7 | 10 | * SM3
|
8 | 11 | * MD5
|
9 | 12 | * SHA1
|
10 | 13 | * SHA256
|
11 |
| -* block cipher algorithm |
| 14 | +* 分组密码算法 |
12 | 15 | * AES(128, 192, 256)
|
13 | 16 | * SM4
|
14 |
| -* block cipher mode |
| 17 | +* 分组密码模式 |
15 | 18 | * ECB
|
16 | 19 | * CBC
|
17 | 20 | * CFB
|
18 | 21 | * OFB
|
19 |
| -* asymmetric key encryption |
| 22 | +* 非对称加密算法 |
20 | 23 | * RSA(2048)
|
| 24 | + * RSA-OAEP(2048) |
21 | 25 |
|
22 | 26 | ## 分组密码
|
23 | 27 |
|
24 |
| -支持:AES(192、169,256), SM4,模式支持ECB,CBC,CFB,OFB。 |
25 |
| -支持两种风格的API。一种是:`aes_{keylen}_{mode}_{en/de}crypt`和`sm4_{mode}_{en/de}crypt`,这是做一次性加密(解密)的。 |
26 |
| -另一种是`aes_{en/de}crypt(aes_ctx_t*, ...)`和`sm4_{en/de}crypt(sm4_ctx_t*, ...)`,这种可以调用多次, |
27 |
| -对流数据进行加密(解密)。具体使用请看`test/test_{aes/sm4}.c`。 |
| 28 | +使用单一加解密函数: |
| 29 | +* `aes_{keylen}_{mode}_{en/de}crypt` |
| 30 | +* `sm4_{mode}_{en/de}crypt` |
| 31 | + |
| 32 | +或者使用多次调用的函数: |
| 33 | +* `aes_{en/de}crypt(aes_ctx_t*, ...)` |
| 34 | +* `sm4_{en/de}crypt(sm4_ctx_t*, ...)` |
| 35 | + |
| 36 | +可以多次调用`{aes/sm4}_{en/de}crypt`,方便用于流式数据的加解密。 |
| 37 | + |
| 38 | +具体使用请看`test/test_{aes/sm4}.c`。 |
28 | 39 |
|
29 | 40 | ## HASH算法
|
30 | 41 |
|
31 |
| -支持SM3,MD5,SHA1,SHA256。使用`{alg}_init`初始化,使用`{alg}_update`更新数据,使用`{alg}_[hex]digest`输出hash值。 |
32 |
| -可以在任意时候调用`{alg}_[hex]digest`获取当前数据的hash值。但是需要保证结果的空间足够存hash值。具体使用请看`test/test_hash.c`。 |
| 42 | +支持SM3,MD5,SHA1,SHA256。 |
| 43 | + |
| 44 | +使用方法: |
| 45 | +* 使用`{alg}_init`初始化 |
| 46 | +* 使用`{alg}_update`更新数据 |
| 47 | +* 使用`{alg}_[hex]digest`输出hash值。 |
| 48 | + |
| 49 | +可以在任意时候调用`{alg}_[hex]digest`获取当前数据的hash值。但是需要保证结果的空间足够存hash值。 |
| 50 | + |
| 51 | +具体使用请看`test/test_hash.c`。 |
33 | 52 |
|
34 | 53 | ## 非对称密钥算法
|
35 | 54 |
|
|
40 | 59 | 使用`./test/rsa_naive_test.py | ./build/test_rsa.elf`进行测试。
|
41 | 60 |
|
42 | 61 | 使用`rsa_pub_oaep_encrypt`进行`RSAES-OAEP`运算,请参考[RFC8017](https://tools.ietf.org/html/rfc8017#section-7.1)。
|
43 |
| -具体使用请看`test/test_oaep.c`。 使用`./test/rsa_oaep_test.py gen | ./build/test_oaep.elf | ./test/rsa_oaep_test.py verify`进行测试。 |
| 62 | + |
| 63 | +具体使用请看`test/test_oaep.c`。 |
| 64 | + |
| 65 | +测试: |
| 66 | +``` |
| 67 | +./test/rsa_oaep_test.py gen | |
| 68 | + ./build/test_oaep.elf | |
| 69 | + ./test/rsa_oaep_test.py verify |
| 70 | +``` |
0 commit comments