如何检查 sha256 哈希值?
How can I check a sha256 hash?
从所有可打印字符开始,我想一个一个地获取 sha256 字符,并将它们与从输入中获取的 sha256 进行比较。
我的代码是:
use hex_literal::hex;
use sha2::{Digest, Sha256};
use std::io;
fn main() {
let printable = vec![b" ", b"!", b"#"];
enter code here
let mut hash_target = String::new();
io::stdin()
.read_line(&mut hash_target)
.expect("Something Wrong!").to_owned();
let hash_target = &hash_target[..];
for i in 0..printable.len() {
let mut sha256 = Sha256::new();
sha256.update(printable[i]);
let result = sha256.finalize();
if result[..]
== hex!(hash_target)[..]
{
println!("True");
}
}
}
我不知道如何将从输入读取的 sha 值赋给 hex 函数。
如the documentation of the hex_literal
crate所述,
hex_literal::hex!
宏用于十六进制 文字 ,因此不适用于 runtime-generated 字符串作为输入。
要将十六进制字符串转换为 u8 切片,您可能需要像这样使用 the hex
crate。
let target = hex::decode(hash_target).expect("Failed to decode hex string");
根据原始代码改编的完整示例,并进行了一些小修复:
use sha2::{Digest, Sha256};
use std::io;
fn main() {
let printables = vec![b" ", b"!", b"#"];
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Failed to read input");
let input_hash = hex::decode(input.trim()).expect("Failed to decode");
for printable in printables.iter() {
let mut sha256 = Sha256::new();
sha256.update(printable);
let expected_hash = sha256.finalize();
if &expected_hash[..] == &input_hash[..] {
println!("True");
}
}
}
从所有可打印字符开始,我想一个一个地获取 sha256 字符,并将它们与从输入中获取的 sha256 进行比较。
我的代码是:
use hex_literal::hex;
use sha2::{Digest, Sha256};
use std::io;
fn main() {
let printable = vec![b" ", b"!", b"#"];
enter code here
let mut hash_target = String::new();
io::stdin()
.read_line(&mut hash_target)
.expect("Something Wrong!").to_owned();
let hash_target = &hash_target[..];
for i in 0..printable.len() {
let mut sha256 = Sha256::new();
sha256.update(printable[i]);
let result = sha256.finalize();
if result[..]
== hex!(hash_target)[..]
{
println!("True");
}
}
}
我不知道如何将从输入读取的 sha 值赋给 hex 函数。
如the documentation of the hex_literal
crate所述,
hex_literal::hex!
宏用于十六进制 文字 ,因此不适用于 runtime-generated 字符串作为输入。
要将十六进制字符串转换为 u8 切片,您可能需要像这样使用 the hex
crate。
let target = hex::decode(hash_target).expect("Failed to decode hex string");
根据原始代码改编的完整示例,并进行了一些小修复:
use sha2::{Digest, Sha256};
use std::io;
fn main() {
let printables = vec![b" ", b"!", b"#"];
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Failed to read input");
let input_hash = hex::decode(input.trim()).expect("Failed to decode");
for printable in printables.iter() {
let mut sha256 = Sha256::new();
sha256.update(printable);
let expected_hash = sha256.finalize();
if &expected_hash[..] == &input_hash[..] {
println!("True");
}
}
}