Skip to content

Tag: Criptografia

SHA-1 em Java

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class sha1it {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        if (args.length==0) return;
        
        MessageDigest md = MessageDigest.getInstance("SHA1");
        md.update(args[0].getBytes());
        byte[] newHash = md.digest();
        StringBuffer newHashStringBuffer = new StringBuffer();
        for ( int i = 0; i < newHash.length; i++ )
            newHashStringBuffer.append(Integer.toHexString(newHash[i]&0xff));
        System.out.println(newHashStringBuffer.toString());
    }
}

Vai calcular o SHA-1 do primeiro argumento da linha de comando:

$ java sha1it silveira
665fc8e2ed1b8aa1571a5c9d3e14d89bad4f0

Note que não é uma implementação pura do SHA-1. Simplesmente pedimos por essa implementação, que pode não estar disponível.

SHA1 em Python

Calcular o SHA1 de uma string em Python é feito quase da mesma forma do calculo do md5 que eu já mostrei aqui antes.

A partir da versão do Python 2.5 a maneira correta de se fazer é assim:

import hashlib
print hashlib.sha1('Silveira').hexdigest()

Isso vai imprimir isto:

25e58a0147633e39c2a2fcceff9a13a181e672b9

Para fazer o calculo do MD5, também se usa a hashlib:

import hashlib
print hashlib.md5('Silveira').hexdigest()

Que vai nos dar o md5 da string ‘Silveira’:

43eb9e4547c642db6cd19713b5c1dff2

O módulo hashlib possui os contrutores md5(), sha1(), sha224(), sha256(), sha384(), e sha512(). Dependendo da implementação da OpenSSL que você tem instalada você poderá ganhar alguns outros construtores.

Maiores informações: documentação da hashlib

Função MD5 em Python

MD5, Message-Digest algorithm 5, é um algoritmo de hash de 128 bits, unidirecional. Ele é muito útil como método de verificação de integridade de arquivos, armazenamento de senhas, criptografia ou para hashing em geral. Eu utilizo ele com muita frequência.

Em Python você calcula o hash de uma string em duas linhas:

import md5
print md5.new('silveira').hexdigest()

O md5.new() retorna um objeto que cria md5. Ele é bem flexível e pode ser utilizado várias vezes. O hexdigest é a representação hexadecimal do md5, aquela que pode ser impressa.

Esse código imprime isso:

3df2175295d900d6f0c2f3a521d957cd

Que é o md5 de silveira.