27 lines
545 B
Text
27 lines
545 B
Text
#include <pari/pari.h>
|
|
#include <openssl/md4.h>
|
|
|
|
#define HEX(x) (((x) < 10)? (x)+'0': (x)-10+'a')
|
|
|
|
/*
|
|
* PARI/GP func: MD4 hash
|
|
*
|
|
* gp code: install("plug_md4", "s", "MD4", "<library path>");
|
|
*/
|
|
GEN plug_md4(char *text)
|
|
{
|
|
char md[MD4_DIGEST_LENGTH];
|
|
char hash[sizeof(md) * 2 + 1];
|
|
int i;
|
|
|
|
MD4((unsigned char*)text, strlen(text), (unsigned char*)md);
|
|
|
|
for (i = 0; i < sizeof(md); i++) {
|
|
hash[i+i] = HEX((md[i] >> 4) & 0x0f);
|
|
hash[i+i+1] = HEX(md[i] & 0x0f);
|
|
}
|
|
|
|
hash[sizeof(md) * 2] = 0;
|
|
|
|
return strtoGENstr(hash);
|
|
}
|