Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

1. Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 17/05/2018 - 18:56h

Recentemente eu ouvi falar de funções Hash, porem existem varias e eu não sei qual e como usar nos meus codigos de C++.
Qual a melhor ? Elas tem o codigo fonte aberto ? È possivel usadas em c++ ?


  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 20/05/2018 - 15:07h

Porque você não usa OpenSSL ?
É bem provável que esteja presente em quase toda distribuição que você for usar.
O único porém é que o SHA-3 só está presente à partir do OpenSSL 1.2.0 e a maior parte das instalações é da versão 1.1.0.

Aqui usando SHA-2 (SHA512)

teste.cpp

#include <algorithm>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>

#include <openssl/sha.h>

std::string sha512sum(const std::string& input)
{
unsigned char digest[SHA512_DIGEST_LENGTH];

// compute hash
SHA512(reinterpret_cast<unsigned const char*>(input.c_str()),
input.size(),
&digest[0]);


// convert byte digest to hex representation
std::stringstream ss;
for(int i = 0; i < SHA512_DIGEST_LENGTH; i++) {
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(digest[i]);
}

return ss.str();
}

int main()
{
using namespace std;

string a {"hello world"};

cout << a << "\n\nsha512 hash: " << sha512sum(a) << endl;

return 0;
}

* Não se esqueça de -lcrypto para linkar com a biblioteca:
g++ -o teste teste.cpp -Wall -O2 -lcrypto

3. não entendi muito bem

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 18/05/2018 - 14:22h

Eu descobri que a melhor função hash é a sha-3 e que para usala tem que instalar o pacote Crypto++ e adicionar a biblioteca Cryptopp/sha-3.h
Mais sempre que tento compilar da erro. E mesmo se compila-se eu não sei como usar essa biblioteca. Como que eu incluo uma string normal pra ela retornar uma string codificada com sha-3 ?

Sem ódio ou extremismo.Por favor :)


4. Re: Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/05/2018 - 15:50h

silas333 escreveu:

Eu descobri que a melhor função hash é a sha-3 e que para usala tem que instalar o pacote Crypto++ e adicionar a biblioteca Cryptopp/sha-3.h
Mais sempre que tento compilar da erro.


Qual erro?

E mesmo se compila-se eu não sei como usar essa biblioteca. Como que eu incluo uma string normal pra ela retornar uma string codificada com sha-3 ?


A biblioteca que você baixou não tem documentação?

Pelo que eu vi no site do Keccak (o grupo que inventou o algoritmo base do SHA-3, em https://keccak.team), existem outras implementações, inclusive a deles próprios, em C.


5. Tem sim !

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 18/05/2018 - 16:52h

Tem a documentação no site :
https://www.cryptopp.com/
Porem eu não entendi nada, a parte https://www.cryptopp.com/docs/ref/class_s_h_a3.html não explica muita coisa.
E o erro depende de qual função da biblioteca você usar, ou seja, provavelmente eu não estou sabendo fazer alguma coisa.
por exemplo, se voce incluir no seu codigo:
CryptoPP::SHA3_512 hash; 

o Compilador mostra um monte de erros, mas todos parecem com esse
error: undefined reference to `CryptoPP::SHA3::Update(unsigned char const*, unsigned long)'
Sem ódio ou extremismo.Por favor :)


6. Re: Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 18/05/2018 - 23:06h

Melhor para qual aplicação ?

Exemplo: Nem sempre a função mais rápida vai ser a melhor ou mais segura.
Para armazenar passwords por exemplo usa-se muito Bcrypt, que justamente por ser bem mais lenta, torna ataques de brute force mais difíceis...


Há muitas implementações de todas elas. Fica até difícil recomendar.
Eu como uso bastante QT costumo utilizar a implementação da prória biblioteca:
http://doc.qt.io/qt-5/qcryptographichash.html#Algorithm-enum


7. Interessante

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 19/05/2018 - 13:32h

Eu estou procurando uma função que seja segura, e não necessariamente rápida. Eu achei o SHA-3, porém eu não sei com como usar essa biblioteca
Sem ódio ou extremismo.Por favor :)


8. Re: Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/05/2018 - 15:27h

Pela mensagem que você colocou, que fala em undefined reference, parece que você esqueceu de mandar o linker procurar a biblioteca.

Lembre-se que não basta incluir os cabeçalhos no código fonte, pois eles contêm apenas as declarações dos símbolos, mas que você deve informar ao linker onde estão as implementações.


9. Funcionou em partes

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 19/05/2018 - 15:42h

Parou de dar o erro depois que eu avisei o Linker, mas eu ainda não sei usar essa biblioteca
Sem ódio ou extremismo.Por favor :)


10. Re: Qual a melhor função Hash e como usá la em c++ [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/05/2018 - 12:34h

É de se esperar que ela tenha alguma documentação. Se não tiver, escolha uma outra que a tenha.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts