/*
*
* PHP Variable Zend Hash Calculater
* Author: wofeiwo
*
*/
#
include <stdio.h>
#
include <stdlib.h>
#
include <string.h>
unsigned long zend_inline_hash_func(char
*
arKey
,
int nKeyLength
,
int nVersion)
{
unsigned long h
=
5381
;
char
*
arEnd
=
arKey
+
nKeyLength;
while
(arKey
<
arEnd) {
h
+=
(h
<<
5
);
switch
(nVersion){
case
4
:
h
^=
(unsigned long)
*
arKey
++
;
break
;
case
5
:
h
+=
(unsigned long)
*
arKey
++
;
break
;
}
}
return
h;
}
int main(int argc
,
char
*
argv[])
{
unsigned long hash4;
unsigned long hash5
;
printf
(
"
PHP Variable Zend Hash Calculater\r\nAuthor: wofeiwo\r\n\r\n
"
);
if
(argc
!=
2
)
{
printf
(
"
Usage: %s <string>\r\n
"
,
argv[
0
]);
exit
(
1
);
}
hash4
=
zend_inline_hash_func(argv[
1
]
,
strlen
(argv[
1
])
+
1
,
4
);
hash5
=
zend_inline_hash_func(argv[
1
]
,
strlen
(argv[
1
])
+
1
,
5
);
printf
(
"
String: %s\r\nPHP4 HASH: %ld\r\nPHP5 HASH: %ld\r\n
"
,
argv[
1
]
,
hash4
,
hash5);
return
0
;
}