-
Notifications
You must be signed in to change notification settings - Fork 0
/
SecureHash.php
67 lines (45 loc) · 1.55 KB
/
SecureHash.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
class SecureHash {
private $hash_type = "sha512";
private $hash_text = "";
private $pre_hash = true;
private $pre_hash_type = "crc32";
private $sep_caracter = "=";
private function isPair($number) {
if ($number%2 == 0) {
return true;
}
return false;
}
private function getPreHash($string) {
$string_array = str_split($string, 1);
$string_number = 0;
foreach($string_array as $char) {
$ascii_char = ord($char);
if ($this->isPair($ascii_char)) {
$string_number -= $ascii_char;
} else {
$string_number += $ascii_char;
}
}
if ($this->pre_hash) {
return hash($this->pre_hash_type, $string_number);
}
return $string_number;
}
function Hash($string) {
$pre_hash = $this->getPreHash($string);
$b64_string = base64_encode($string);
$hash_string = sprintf("%s%s%s%s%s", $this->hash_text, $this->sep_caracter, $pre_hash, $this->sep_caracter, $b64_string);
$hashed_string = hash($this->hash_type, $hash_string);
return $hashed_string;
}
function verifyHash($string, $hash) {
$hash_string = $this->Hash($string);
if ($hash_string===$hash) {
return true;
}
return false;
}
}
?>