Gotowe, do testow

This commit is contained in:
Michal Pelc 2017-12-13 19:34:45 +01:00
parent fd9ed2ee10
commit 89644280d9
2 changed files with 43 additions and 23 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/.idea

View File

@ -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,26 +35,32 @@ def find_colision(input):
hare=rmhash(hare);
hare=rmhash(hare);
print("Zolw: "+tortoise+" Zajac "+hare)
print("{}: zolw={} zajac={} ".format(i,to_string(tortoise), to_string(hare)))
# Zolw na poczatek
tortoise = input;
while tortoise != hare:
previous_tortoise = tortoise;
tortoise = rmhash(tortoise);
hare = rmhash(hare)
pierwsze_wystapienie_cyklu += 1;
#Przesuwam zajaca o jedno pole do przodu
hare=rmhash(hare);
hare=rmhash(tortoise);
while tortoise!=hare:
previous_hare = hare;
hare=rmhash(hare);
dlugosc_cyklu+=1;
print("Zajac jest na polu "+hare+" a byl na "+previous_hare)
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))
#Zolw na poczatek
tortoise = input;
collision_a = rmhash(input,pierwsze_wystapienie_cyklu-1);
collision_b = rmhash(input, pierwsze_wystapienie_cyklu + dlugosc_cyklu-1);
while tortoise!=hare:
previous_tortoise = tortoise;
tortoise=rmhash(tortoise);
pierwsze_wystapienie_cyklu+=1;
print("Hash ciagow: {}, {} to {}".format(to_string(collision_a),to_string(collision_b),to_string(rmhash(collision_a))))
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))
return(collision_a,collision_b);