30 lines
No EOL
642 B
C
30 lines
No EOL
642 B
C
#include "hashtopass.h"
|
|
|
|
void hashtopass(int numbers_only, char* p, size_t len, uint8_t* key)
|
|
{
|
|
int i;
|
|
char* numerals = "0123456789";
|
|
|
|
if (numbers_only) {
|
|
|
|
for (i = 0; i < len; i++)
|
|
p[i] = numerals[key[i] % 10];
|
|
|
|
} else {
|
|
|
|
char* lowers = "abcdefghijklmnopqrstuvwxyz";
|
|
char* uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
char* allchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
|
|
p[0] = lowers[key[0] % 26];
|
|
p[1] = numerals[key[1] % 10];
|
|
p[2] = uppers[key[2] % 26];
|
|
|
|
size_t i;
|
|
for (i = 3; i < len; i++)
|
|
p[i] = allchars[key[i] % (26 + 26 + 10)];
|
|
}
|
|
|
|
p[len] = '\0';
|
|
|
|
} |