MD5 / SHA1 / Base64

MD5

Gerando hash de uma string

# Linux
echo -n "teste" | md5sum

Gerando hash de um arquivo

# Linux
md5sum <arquivo>

# Windows
Get-FileHash <file> -Algorithm MD5
certutil -hashfile <file> md5

O comando md5sum (Linux) possui o parâmetro -b, para realizar a operação em binário, pois por padrão ele utiliza a opção -t, que é a verificação com text.

SHA1

Gerando hash de uma string

echo -n "teste" | sha1sum

Gerando hash de um arquivo

# Linux
sha1sum <arquivo>

# Windows
certutil -hashfile <file> sha256

Base64

Ahh o Base64... esse é um encoding que "talvez" nem deveria estar aqui na seção de criptografia, mas como é muito utilizada em torno de funções criptográficas, vale a pena citá-la. Basicamente, ele percorre todos os bytes e transforma cada conjunto de 6 bits em um byte legível (8 bits). O resultado é que o tamanho dos bytes codificados aumenta em cerca de 33%.

Encode

Linux

# Convertendo string em base64
echo -n "<string>" | base64
# Convertendo string em base64 e depois em MD5
echo -n "<string>" | base64 -w 0 | md5sum

# Encode de arquivo
base64 -w 0 <file>

Windows

# Convertendo string em base64
$str = '<string>'
[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($str))

# Encode de arquivo
[Convert]::ToBase64String((Get-Content -path "<file>" -Encoding byte))

Decode

Linux

echo -n "dGVzdGU=" | base64 -d
base64 -d <file>
echo "dGVzdGU=" | python -m base64 -d
openssl enc -base64 -d <<< 'dGVzdGU='

Windows (Powershell)

[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('<base64_encode>'))
[IO.File]::WriteAllBytes("<output_file>", [Convert]::FromBase64String("<base64_encode>"))

Execução de Comandos

Linux

echo '<base64>' | base64 -d | bash

Windows

Powershell -EncodedCommand "d2hvYW1p"
iex ([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("d2hvYW1p")))
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("d2hvYW1p")) | iex
iex ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("d2hvYW1p")))
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("d2hvYW1p")) | iex

Sites

# Como o base64 funciona
https://marquesfernandes.com/o-que-e-base64-para-que-serve-e-como-funciona/

Last updated