試行錯誤のおと

日々の試行錯誤した結果です。失敗することが多い記録、それだけでっす!

rust で hash 関数を扱ってみた

最近、趣味で rust を書いてる。

rust で sha256 を使って符号化したいケースがあったので調べてみた。

調べていくと rust-crypto [1] なる crate が見つかった。更新頻度も高くてよさそう。

しかし、これドキュメントがない。

ドキュメントがないので、ソースコードを追って読んでみた。 メモがてら記録としてサンプルコードを残しておくことにする。

Cargo.toml

[package]
name = "test"
version = "0.1.0"
authors = ["kizkoh"]

[dependencies]
rust-crypto = "0.2"

main.rs

extern crate crypto;

use crypto::sha2::Sha256;
use crypto::digest::Digest;

pub fn main() {
    let input: String = "test".to_string();
        
    let mut sha256 = Sha256::new();
    sha256.input_str(&input);

    println!("input: {}", input);
    println!("digest: {}", sha256.result_str());
}
$ cargo run                                                                                                                                         [master]
     Running `target/debug/test`
input: test
digest: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
$ echo -n "test" | openssl dgst -sha256
(stdin)= 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

ちゃんと openssl と同じ結果になる。

[1] https://crates.io/crates/rust-crypto