#primitive #chacha #cryptonote #generate #cryptography #hash #chacha-key

cryptonote-crypto

为 CryptoNote 设计的密码学原语

4 个版本

0.2.2 2019年4月1日
0.2.1 2019年3月30日
0.2.0 2019年3月30日
0.1.0 2019年3月29日

#6#cryptonote

GPL-3.0-or-later

24KB
551 行代码

基于 CryptoNote 的加密货币的密码学原语

codecov

用法

  1. CryptoNote Chacha8 函数。

a. 生成 ChachaKey

use cryptonote_crypto::chacha::{ChachaKey};
let key = ChachaKey::generate(String::from(""));
let key = ChachaKey::generate(String::from("your password"));

b. 生成 Chacha

    let iv = ChachaIV::new();
    let chacha = Chacha::new(key, iv);

c. 加密明文

    let plain = *b"hello world!";
    let cipher = chacha.encrypt(&plain[..]);
    let cipher1 = chacha.encrypt(&cipher[..]);
    assert!(plain == cipher1.as_slice());
  1. 慢速哈希

use cryptonote_crypto::hash;
// Version 6
let a = b"hello world!";
let hash = hash::cn_slow_hash(&a[0..], hash::HashVersion::Version6);

// Version 7
// a must be a byte_string with more than 64 bytes long
let a = byte_string::string_to_u8_array("0707cff699d605f7eb4dbdcad3a38b462b52e9b8ecdf06fb4c95bc5b058a177f84d327f27db739430000000363862429fb90c0fc35fcb9f760c484c8532ee5f2a7cbea4e769d44cd12a7f201");
let hash = hash::cn_slow_hash(&a[0..], hash::HashVersion::Version7);
  1. 快速哈希
use cryptonote_crypto::hash;
let a = b"hello world!";
let hash = hash::cn_fast_hash(&a[0..]);

依赖项

~4.5MB
~61K SLoC