-
Notifications
You must be signed in to change notification settings - Fork 0
/
hash.py
37 lines (31 loc) · 1 KB
/
hash.py
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
import jellyfish as jf
def hashing(plaintext, length=32):
cardamom = len(plaintext)
hash = []
salt = 0
pepper = 0
counter = 0
text = "abcdefghjiklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ)(*&%$#@!<?"
for char in plaintext:
pepper += ord(char) + pepper
pepper -= ~ len(plaintext)
while counter <= length:
cardamom += pepper * cardamom & salt
pepper += 2
salt -= ~ len(plaintext)
counter += 1
pepper %= cardamom
counter = 0
plaintext = plaintext.encode()
while counter <= length:
cardamom = (salt << pepper) | (cardamom >> pepper)
hash.append(text[(cardamom*salt*pepper) % len(text)])
pepper += plaintext[counter % len(plaintext)]
salt += 1
counter += 1
return hash
plaintext1 = "yy"
plaintext2 = "hello, world"
print("".join(hashing(plaintext1)))
print("".join(hashing(plaintext2)))
print(jf.jaro_distance("".join(hashing(plaintext1)), "".join(hashing(plaintext2))))