Estou fazendo hash de uma string.
let src = String::from("abcd12342020");
let h1 = sha2::Sha256::digest(&src.as_bytes());
let h2 = sha2::Sha256::digest(hex::decode(&src).expect("this is not hex"));
h1
e h2
são diferentes. Qual é a razão subjacente ? Qual é a diferença entre uma representação de bytes e uma representação hexadecimal? (Tentei fornecer um playground, mas a hex
criação não está disponível lá)
h1
eh2
são diferentes porquesrc.as_bytes()
ehex::decode(&src)
são diferentes. Envolva-os com adbg!
macro para ver a diferença.Eles são diferentes porque
hex::decode
analisa o texto como hexadecimal, o significadoab
é analisado0xAB
etc. Massrc.as_bytes()
retorna o texto codificado como uma sequência de bytes UTF-8, o significadoab
é codificado na memória como[0x61, 0x62]
.