如何拥有自定义时间戳和哈希 sha256 并将它们转换为带有 Rust 的字符串?
How to have a custom timestamp and a hash sha256 and convert them into a string with Rust?
我尝试使用这样的自定义时间戳:YYYYMMDDHHMMSS
我用它来记录我现在的时间 :
let timestamp = chrono::offset::Local::now();
获得类似的东西:
2020-11-12T09:53:02.419182341+00:00
那么我怎样才能extract/convert把它变成我想要的格式,然后再把它转换成字符串呢?
因为我想用哈希将它连接起来。
我实际上正在使用这个:
let auth = [timestamp, hash].concat();
我还有一个问题:
如何在 sha256 中对我的散列进行编码以及如何将其转换为字符串?
因为我实际上在使用 :
let mut hasher = Sha256::new();
hasher.update("Hello world");
let hash = hasher.finalize();
println!("{:?}", hash);
我得到了类似的东西:
[100, 236, 136, 202, 0, 178, 104, 229, 186, 26, 53, 103, 138, 27, 83, 22, 210, 18, 244, 243, 102, 178, 71, 114, 50, 83, 74, 138, 236, 163, 127, 60]
对吗?
我尝试使用 elastic_types、格式、SystemTime、...
但是我无法达到我的目标......
所以欢迎您的帮助! :)
How can I convert this into the format I want and convert it into a String
?
Chrono 在 chrono::format::strftime
中有多种格式选项,例如:
use chrono::prelude::*;
fn main() {
println!("{}", Local::now().format("%Y%m%d%H%M%S")); // YYYYMMDDHHMMSS
}
202011121108
How do I encode my hash in Sha256
and how do I convert it to a String
?
使用 {:?}
将得到 Debug
特征实现的结果。
您似乎在使用 {:x}
或 {:X}
表示小写和大写十六进制的十六进制字符串,例如:
use sha2::{Sha256, Digest};
fn main() {
println!("{:x}", Sha256::digest(b"Hello world"));
}
64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
std::fmt
的 Rust 文档中有更多关于此的内容。
要连接两者,您可以执行类似于以下操作的操作:
use chrono::prelude::*;
use sha2::{Sha256, Digest};
fn main() {
let s = "Hello world";
println!("{}{:x}",
Local::now().format("%Y%m%d%H%M%S"),
Sha256::digest(s.as_bytes())
);
}
2020111211080464ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
我尝试使用这样的自定义时间戳:YYYYMMDDHHMMSS
我用它来记录我现在的时间 :
let timestamp = chrono::offset::Local::now();
获得类似的东西:
2020-11-12T09:53:02.419182341+00:00
那么我怎样才能extract/convert把它变成我想要的格式,然后再把它转换成字符串呢?
因为我想用哈希将它连接起来。
我实际上正在使用这个:
let auth = [timestamp, hash].concat();
我还有一个问题:
如何在 sha256 中对我的散列进行编码以及如何将其转换为字符串?
因为我实际上在使用 :
let mut hasher = Sha256::new();
hasher.update("Hello world");
let hash = hasher.finalize();
println!("{:?}", hash);
我得到了类似的东西:
[100, 236, 136, 202, 0, 178, 104, 229, 186, 26, 53, 103, 138, 27, 83, 22, 210, 18, 244, 243, 102, 178, 71, 114, 50, 83, 74, 138, 236, 163, 127, 60]
对吗?
我尝试使用 elastic_types、格式、SystemTime、...
但是我无法达到我的目标......
所以欢迎您的帮助! :)
How can I convert this into the format I want and convert it into a
String
?
Chrono 在 chrono::format::strftime
中有多种格式选项,例如:
use chrono::prelude::*;
fn main() {
println!("{}", Local::now().format("%Y%m%d%H%M%S")); // YYYYMMDDHHMMSS
}
202011121108
How do I encode my hash in
Sha256
and how do I convert it to aString
?
使用 {:?}
将得到 Debug
特征实现的结果。
您似乎在使用 {:x}
或 {:X}
表示小写和大写十六进制的十六进制字符串,例如:
use sha2::{Sha256, Digest};
fn main() {
println!("{:x}", Sha256::digest(b"Hello world"));
}
64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
std::fmt
的 Rust 文档中有更多关于此的内容。
要连接两者,您可以执行类似于以下操作的操作:
use chrono::prelude::*;
use sha2::{Sha256, Digest};
fn main() {
let s = "Hello world";
println!("{}{:x}",
Local::now().format("%Y%m%d%H%M%S"),
Sha256::digest(s.as_bytes())
);
}
2020111211080464ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c