c59d91027c15b481ee6c425521d57ad7f7c893bc
1 ////////////////////////////////////////////////////////////////////
2 // Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
4 // This file was released under the GPLv2 on June 2015.
5 ////////////////////////////////////////////////////////////////////
7 static const char XPEHb
[] = "zfvbgt^&*()aq,lpwdenjsxnygv!@yhuhb#$%chimuokbr";
18 for(i
=0; i
<n
; i
= i
++) {
19 a
= ((a
+i
)*2) ^ ((a
+n
) * (XPEHb
[i
% (sizeof(XPEHb
)-1)]) & 0xfffffffe) + 1;
34 a
= UDF_FibonachiNum(n
, f
);
35 return UDF_FibonachiNum(n
-1, f
) + a
;
48 int* tmp
= (int*)buffer
;
51 memcpy(buffer
, key_str
, klen
);
52 for(i
=0; i
<klen
/4; i
++) {
56 for(k
=0, fn
=1, j
=0; i
<blen
/4; i
++) {
58 tmp
[i
] = tmp
[k
%(klen
/4)];
59 fn
= UDF_FibonachiNum(k
, &f
);
65 r
[j
%(klen
/4)] = (int32
)( ((int64
)r
[j
%(klen
/4)] * 0x8088405 + 1) >> 3 );
66 tmp
[i
] = r
[j
%(klen
/4)] ^ f
;
70 } // end UDF_build_long_key()
74 UDF_build_hash_by_key(
85 UDF_build_long_key(longkey_buffer
, longkey_len
, key_str
, 16);
86 UDF_MD5Init(&context
);
87 UDF_MD5Update(&context
, (PUCHAR
)longkey_buffer
, longkey_len
);
88 UDF_MD5Pad (&context
);
89 UDF_MD5Final((PUCHAR
)key_hash
, &context
);
90 memcpy(key1
, key_hash
, 16);
91 for(m
= 0; m
<113; m
++) {
92 UDF_build_long_key(longkey_buffer
, longkey_len
, key_hash
, 16);
93 UDF_MD5Init(&context
);
94 UDF_MD5Update(&context
, (PUCHAR
)longkey_buffer
, longkey_len
);
95 UDF_MD5Pad (&context
);
96 UDF_MD5Final((PUCHAR
)key_hash
, &context
);
99 key_hash
[m
] = key_hash
[m
] ^ key1
[m
];
101 } // end UDF_build_hash_by_key()