密码学

Toka 提供标准的密码学模块,支持常用的哈希算法。

MD5 哈希

import std/io::println
import stdx/crypto/md5::Md5

fn example() {
    auto md5# = Md5::new()
    md5#.update("Hello, Toka!")
    auto hash = md5#.finalize_hex()
    println("MD5: {}", hash)
}

SHA-1

import std/io::println
import stdx/crypto/sha1::Sha1

fn example() {
    auto sha1# = Sha1::new()
    sha1#.update("Hello, Toka!")
    auto hash = sha1#.finalize_hex()
    println("SHA1: {}", hash)
}

SHA-256

import std/io::println
import stdx/crypto/sha256::Sha256

fn example() {
    auto sha256# = Sha256::new()
    sha256#.update("Hello, Toka!")
    auto hash = sha256#.finalize_hex()
    println("SHA256: {}", hash)
}

文件哈希

对文件内容进行哈希:

import std/fs
import stdx/crypto/sha256::Sha256
import core/result::Result

fn verify_file(path: string) -> Result<bool, string> {
    auto content = fs::read_to_string(path).unwrap()
    auto sha256# = Sha256::new()
    sha256#.update(content.as_str())
    auto computed = sha256#.finalize_hex()
    
    return Result<bool, string>::Ok(computed.len() > 0:usize)
}

安全随机数

用于密码学应用:

import stdx/rand/rand::Random

fn generate_key() -> u64 {
    // 伪随机字节(不安全,仅用于演示)
    auto rng# = Random::new(12345:u64, 1:u64)
    return rng#.next_u64()
}

密码学模块适用于:

  • 密码哈希和验证
  • 文件完整性检查
  • 数据签名和验证
  • 安全随机数生成