Add hashcat command lines
[pwdhash.git] / b64-cl.c
1 #include "b64-cl.h"
2
3 const char b64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
4
5 u32 b64_encode (u8 *base64_hash, const u32 len, const u8 *base64_plain)
6 {
7 u8 *out_ptr = (u8 *) base64_hash;
8 u8 *in_ptr = (u8 *) base64_plain;
9 u32 out_len;
10
11 u32 i;
12
13 out_len = 0;
14 for (i = 0; i < (len - 2); i += 3)
15 {
16 char out_val0 = b64_table [ ((in_ptr[0] >> 2) & 0x3f)];
17 char out_val1 = b64_table [((in_ptr[0] << 4) & 0x30) | ((in_ptr[1] >> 4) & 0x0f)];
18 char out_val2 = b64_table [((in_ptr[1] << 2) & 0x3c) | ((in_ptr[2] >> 6) & 0x03)];
19 char out_val3 = b64_table [ ((in_ptr[2] >> 0) & 0x3f)];
20
21 out_ptr[0] = out_val0 & 0x7f;
22 out_ptr[1] = out_val1 & 0x7f;
23 out_ptr[2] = out_val2 & 0x7f;
24 out_ptr[3] = out_val3 & 0x7f;
25
26 in_ptr += 3;
27 out_ptr += 4;
28 out_len += 4;
29 }
30 if (i == (len - 1)) {
31 char out_val0 = b64_table [ ((in_ptr[0] >> 2) & 0x3f)];
32 char out_val1 = b64_table [((in_ptr[0] << 4) & 0x30) ];
33
34 out_ptr[0] = out_val0 & 0x7f;
35 out_ptr[1] = out_val1 & 0x7f;
36 out_ptr[2] = '=';
37 out_ptr[3] = '=';
38
39 in_ptr += 3;
40 out_ptr += 4;
41 out_len += 4;
42 }
43 if (i == (len - 2)) {
44 char out_val0 = b64_table [ ((in_ptr[0] >> 2) & 0x3f)];
45 char out_val1 = b64_table [((in_ptr[0] << 4) & 0x30) | ((in_ptr[1] >> 4) & 0x0f)];
46 char out_val2 = b64_table [((in_ptr[1] << 2) & 0x3c) ];
47
48 out_ptr[0] = out_val0 & 0x7f;
49 out_ptr[1] = out_val1 & 0x7f;
50 out_ptr[2] = out_val2 & 0x7f;
51 out_ptr[3] = '=';
52
53 in_ptr += 3;
54 out_ptr += 4;
55 out_len += 4;
56 }
57
58 return out_len;
59 }
60