1
0
mirror of https://github.com/fumiama/simple-crypto.git synced 2026-06-06 02:20:22 +08:00
Files
simple-crypto/README.md
源文雨 2e833f3ab8 优化tea
2022-04-18 15:22:59 +08:00

68 lines
1.8 KiB
Markdown

# simple-crypto
Simple C lib of the MD5 & TEA algorithm
# Performance
Benchmark a `3.5MB` file comparing with `md5` command in `MacOS Mojave` by running three times `time` command then calculating their average.
```bash
# system command: total 22ms
real 0m0.015s
user 0m0.012s
sys 0m0.005s
# our md5 command: total 39ms
# build by
gcc md5.c -o md5 -O3 -DTEST_SIMPLE_CRYPTO
real 0m0.021s
user 0m0.013s
sys 0m0.005s
```
Our version is `17ms` slower than what system does.
Benchmark a `481.7MB` file comparing with `md5` command in `MacOS Mojave` by running three times `time` command then calculating their average.
```bash
# system command: total 2079ms
real 0m0.980s
user 0m0.964s
sys 0m0.135s
# our md5 command: total 2499ms
# build by
gcc md5.c -o md5 -O3 -DTEST_SIMPLE_CRYPTO
real 0m1.253s
user 0m1.003s
sys 0m0.243s
```
Our version is `400ms` slower than what system does.
# Install
```bash
git clone https://github.com/fumiama/simple-crypto.git
cd simple-crypto
mkdir build
cd build
cmake ..
make
make install
```
# Usage
1. Include `simplecrypto.h` in your c program.
```c
#include <simplecrypto.h>
```
2. Call functions.
```c
uint8_t* md5(const uint8_t *data, size_t data_len, uint8_t digest[16]);
int64_t tea_encrypt_qq(const TEA t[4], const TEADAT* src, TEADAT* out);
int64_t tea_encrypt(const TEA t[4], const uint32_t sumtable[0x10], const TEADAT* src, TEADAT* out);
int64_t tea_encrypt_native_endian(const TEA t[4], const uint32_t sumtable[0x10], const TEADAT* src, TEADAT* out);
int64_t tea_decrypt_qq(const TEA t[4], const TEADAT* src, TEADAT* out);
int64_t tea_decrypt(const TEA t[4], const uint32_t sumtable[0x10], const TEADAT* src, TEADAT* out);
int64_t tea_decrypt_native_endian(const TEA t[4], const uint32_t sumtable[0x10], const TEADAT* src, TEADAT* out);
```