Gotowe, do testow
This commit is contained in:
parent
fd9ed2ee10
commit
89644280d9
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/.idea
|
59
script.py
59
script.py
@ -1,17 +1,30 @@
|
||||
import md5
|
||||
#-*-encoding:utf-8-*-
|
||||
|
||||
renmich_1 = 'renmich1123376350383621786626';
|
||||
renmich_2 = 'renmich3700873222361195459231';
|
||||
from hashlib import md5
|
||||
from binascii import hexlify
|
||||
|
||||
def rmhash(input):
|
||||
return md5.new(md5.new(input).digest()).digest()[1:3];
|
||||
renmich_1 = 'renmich1123376350383621786626'.encode();
|
||||
renmich_2 = 'renmich3700873222361195459231'.encode();
|
||||
|
||||
def rmhash(input,n=1):
|
||||
tmp = input;
|
||||
for i in range(n):
|
||||
x = md5();
|
||||
x.update(tmp);
|
||||
y = md5();
|
||||
y.update(x.digest())
|
||||
tmp = y.digest()[1:7]
|
||||
return tmp;
|
||||
|
||||
def to_string(b):
|
||||
return hexlify(b).decode();
|
||||
|
||||
def find_colision(input):
|
||||
tortoise=input;
|
||||
hare=input;
|
||||
i=0;
|
||||
|
||||
dlugosc_cyklu = 0;
|
||||
dlugosc_cyklu = 1;
|
||||
pierwsze_wystapienie_cyklu = 0;
|
||||
|
||||
while i==0 or tortoise!=hare:
|
||||
@ -22,17 +35,7 @@ def find_colision(input):
|
||||
hare=rmhash(hare);
|
||||
hare=rmhash(hare);
|
||||
|
||||
print("Zolw: "+tortoise+" Zajac "+hare)
|
||||
|
||||
#Przesuwam zajaca o jedno pole do przodu
|
||||
hare=rmhash(hare);
|
||||
|
||||
while tortoise!=hare:
|
||||
previous_hare = hare;
|
||||
hare=rmhash(hare);
|
||||
dlugosc_cyklu+=1;
|
||||
|
||||
print("Zajac jest na polu "+hare+" a byl na "+previous_hare)
|
||||
print("{}: zolw={} zajac={} ".format(i,to_string(tortoise), to_string(hare)))
|
||||
|
||||
# Zolw na poczatek
|
||||
tortoise = input;
|
||||
@ -40,8 +43,24 @@ def find_colision(input):
|
||||
while tortoise != hare:
|
||||
previous_tortoise = tortoise;
|
||||
tortoise = rmhash(tortoise);
|
||||
hare = rmhash(hare)
|
||||
pierwsze_wystapienie_cyklu += 1;
|
||||
|
||||
print("Zolw jest na polu "+tortoise+" a byl na "+previous_tortoise)
|
||||
print("Dlugosc cyklu: "+str(dlugosc_cyklu))
|
||||
print("Pierwsze wystapienie cyklu: "+str(pierwsze_wystapienie_cyklu))
|
||||
#Przesuwam zajaca o jedno pole do przodu
|
||||
hare=rmhash(tortoise);
|
||||
|
||||
while tortoise!=hare:
|
||||
previous_hare = hare;
|
||||
hare=rmhash(hare);
|
||||
dlugosc_cyklu+=1;
|
||||
|
||||
print("Zajac jest na polu {} a byl na {}".format(to_string(hare),to_string(previous_hare)))
|
||||
print("Zolw jest na polu {} a byl na {}".format(to_string(tortoise),to_string(previous_tortoise)))
|
||||
print("Dlugosc cyklu: {}; Pierwsze wystapienie cyklu {}".format(dlugosc_cyklu,pierwsze_wystapienie_cyklu))
|
||||
|
||||
collision_a = rmhash(input,pierwsze_wystapienie_cyklu-1);
|
||||
collision_b = rmhash(input, pierwsze_wystapienie_cyklu + dlugosc_cyklu-1);
|
||||
|
||||
print("Hash ciagow: {}, {} to {}".format(to_string(collision_a),to_string(collision_b),to_string(rmhash(collision_a))))
|
||||
|
||||
return(collision_a,collision_b);
|
Loading…
Reference in New Issue
Block a user