#tea #tencent #byte #padding #secure-random #varient

tc_tea

Rusty implementation of Tencent's varient of TEA (tc_tea)

4 releases

0.1.4 Dec 29, 2021
0.1.3 Dec 29, 2021
0.1.1 Dec 28, 2021
0.1.0 Dec 28, 2021

#1315 in Cryptography

MIT/Apache

15KB
246 lines

tc_tea

Rusty implementation of Tencent modified TEA (tc_tea).

Test data generated using its C++ implementation: tc_tea.cpp (BSD-3-Clause).

Code implemented according to the spec described in iweizime/StepChanger:腾讯 TEA 加密算法.

Features

  • secure_random (default: on): Enable secure RNG when generating padding bytes for tc_tea.

Install

Add the following to [dependencies] section in your Cargo.toml file:

tc_tea = "0.1.4"

Troubleshooting

  • Key need to have 16 bytes or more.
    • None will be returned if less than 16 bytes provided.
    • If more bytes were provided, only the first 16 bytes will be used.
  • Encrypted data should have a size that is multiple of 8.
    • None will be returned if encrypted_data.len() % 8 > 0.

Usage

use tc_tea;

fn hello_tc_tea() {
    let key = "12345678ABCDEFGH";
    let encrypted = tc_tea::encrypt(&"hello", &key).unwrap();
    let decrypted = tc_tea::decrypt(&encrypted, &key).unwrap();
    assert_eq!("hello", std::str::from_utf8(&decrypted).unwrap());
}

License

Dual licensed under MIT OR Apache-2.0 license.

SPDX-License-Identifier: MIT OR Apache-2.0

Dependencies

~375–570KB
~11K SLoC