O código-fonte do grub é o melhor lugar para descobrir. A lógica necessária está em stage2/md5.c
in:
int md5_password (const char *key, char *crypted, int check)
Produz cadeias da forma: $1$aaaaaaaa$bbbbbbbbbbbbbbbbbbbbbb
, em que a sequência "aaaaaaaa" é um sal aleatório, e "bbbbbbbbbbbbbbbbbbbbbb" é o resultado da mistura da senha e do sal até 1000 vezes de uma maneira particular e uma codificação base64 modificada do resultado md5.
O dicionário base64 modificado é:
./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
O algoritmo de mixagem atual pode ser redistribuído sob os termos da GNU General Public License versão 2 (ou qualquer versão posterior), e você pode obtê-lo a partir do Site FTP GNU ou qualquer espelho GNU.