Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!

Participe do fórum, é rápido e fácil

Vilarejo PK2P
Bem-vindo ao fórum Vilarejo PK2P! O fórum oficial do canal Press Key to Play do Youtube!
Vilarejo PK2P
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Grupo para reunir as pessoas que acompanham os vídeos no canal Press Key to Play e discutir os assuntos abrangidos pelo Blog PK2P.

Últimos assuntos

» RPG de Mesa: A fronteira Volume 4: O Castelo Owlrick. (D&D5e)
por Ariano 10/12/2020, 23:18

» [tutorial] hash em C/C++ com openssl
por kodo no kami 21/9/2020, 13:37

» ping lista grafico
por kodo no kami 24/7/2020, 07:53

» [Discord] Campanha de RPG D-cyber
por Jonatan15 17/7/2020, 11:11

» [tradução] 1869 (msdos)
por kodo no kami 26/6/2020, 13:43

» [source] exemplo filtro mediano
por kodo no kami 1/6/2020, 00:24

» [tutorial] criar filtro nas imagens (python)
por kodo no kami 22/5/2020, 19:29

» Wireless IDS Sagemcom
por kodo no kami 22/4/2020, 23:50

» [source] detectar dispositivos no wifi (sagemcom)
por kodo no kami 9/3/2020, 20:25

» [tutorial] wla assemblador (65xx, 68xx, z80, 8008, 8080 e huc6280)
por kodo no kami 2/2/2020, 16:42


Você não está conectado. Conecte-se ou registre-se

[tutorial] hash em C/C++ com openssl

Ir para baixo  Mensagem [Página 1 de 1]

kodo no kami

kodo no kami

Nesse tutorial vamos aprender como criar hashs em C/C++ usando a lib do openssl (nesse topico não vou abordar a instalação da lib ou da biblioteca), no caso o openssl é uma excelente ferramenta de criptografia contendo varios tipos de hashs (md5, md4, sha, ripemd e whrlpool), criptografias simetricas/assimetricas, certificados digitais, formas de comunicações criptografadas (ssl/tls) entre outras coisas. No caso das hashs começamos declarando a biblioteca dela (no caso do md5 que vamos utilizar nesse tutorial incluimos o openssl/md5)

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
}

para compilar é necessario declarar a lib crypto durante a compilação, caso não fizer o compilador não vai reconhecer as funções do openssl

Código:
gcc kodo.c -o kodo.out -l crypto

[tutorial] hash em C/C++ com openssl B3ASTkn

agora declaramos a estrutura de contexto daquela hash, sendo MD5_CTX no caso do md5

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
}

usamos a função MD5_Init com o endereço de memoria da nossa estrutura de contexto

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
 
  MD5_Init(&hash);
}

vamos criar uma array contendo a nossa string e uma outra tendo o tamanho 16bytes para armazenar a hash gerada (no caso da md5 é uma hash de 128bits ou seja 16bytes de tamanho fixo)

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
  char texto[] = "cade as waifus";
  unsigned char textohash[16];
 
  MD5_Init(&hash);
}

agora usamos a função MD5_Upadate para calcular a hash md5, o primeiro argumento dela é o endereço do contexto da hash, o segundo argumento é a nossa string que vamo calcular, o terceiro argumento é o tamanho dessa string (obs: temos que tomar um certo cuidado aqui nesse tamanho, as strings em C tem um caracter NULL no final, caso voce inclua ele acidentalmente o calculo da hash vai ser diferente e pode não bater com outros sistemas, outro problema caso crie uma array de um tamanho especifico por exemplo de 10 bytes e seu texto nela é de apenas apenas 4 bytes então deve tomar o cuidado de incluir apenas esses 4 bytes)

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
  char texto[] = "cade as waifus";
  unsigned char textohash[16];
 
  MD5_Init(&hash);
  MD5_Update(&hash, texto, sizeof(texto) - 1);
}

por fim usamos a função MD5_Final para exportar os bytes do MD5 para a nossa array, nessa função passamos como argumento o nossa array seguido do endereço do contexto

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
  char texto[] = "cade as waifus";
  unsigned char textohash[16];
 
  MD5_Init(&hash);
  MD5_Update(&hash, texto, sizeof(texto) - 1);
  MD5_Final(textohash, &hash);
}

agora basta a gente ler a nossa array que contem a hash

Código:

#include <stdio.h>
#include <openssl/md5.h>

int main(void){
  MD5_CTX hash;
  char texto[] = "cade as waifus";
  unsigned char textohash[16];
 
  MD5_Init(&hash);
  MD5_Update(&hash, texto, sizeof(texto) - 1);
  MD5_Final(textohash, &hash);
 
  int cont = 0;
  for(cont; cont <= (sizeof(textohash) - 1); cont++){
    printf("%02x", textohash[cont]);
  }
  printf("\n");
}

[tutorial] hash em C/C++ com openssl YTYzkgT

em outros tipos de hashs é a mesma logica do md5, bastando mudar apenas os nomes das funções, ex: sha256

Código:

#include <stdio.h>
#include <openssl/sha.h>

int main(void){
  SHA256_CTX hash;
  char texto[] = "cade as waifus";
  unsigned char textohash[32];
 
  SHA256_Init(&hash);
  SHA256_Update(&hash, texto, sizeof(texto) - 1);
  SHA256_Final(textohash, &hash);
 
  int cont = 0;
  for(cont; cont <= (sizeof(textohash) - 1); cont++){
    printf("%02x", textohash[cont]);
  }
  printf("\n");
}

[tutorial] hash em C/C++ com openssl EIJwGZ1

bom galera tem outras funções do openssl bem legais tambem que podemos abordar em futuros posts (OU NAO) \o

by kodo no kami

https://eofclub.in/forum

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos