[solved] kolejny zwykly problem ze wskaznikami?

0

Witam. Troche sie trudze z implementacja hashowania md5 - mianowicie mialo byc na wskaznikach, tymczasem ja dostaje odpalajc program kilka razy wciaz inny wynik (random? raczej jezdze po pamieci :D) - moja prosba jest, zeby ktos rzucil okiem moze cos wypatrzy, bo ja nic nie widze (za cienki jestem w c++):


//edited - problem byl tak blachy, ze uzywalem nie zainicjowanej tablicy (pomylilem nazwy), dzieki za pomoc :D

0
abc napisał(a)
    for (int i=0;i<0;i++)
    {
      istringstream* teXX=  new istringstream(yy);
      *teXX>>test;
      delete teXX;
    }

Masz błąd w warunku.
Eh, a przejrzałem dokładnie resztę żeby zobaczyć czy poza tablicę nie wychodzisz... a tu takie coś prosto przed oczami.

0
programista87 napisał(a)
abc napisał(a)
    for (int i=0;i<0;i++)
    {
      istringstream* teXX=  new istringstream(yy);
      *teXX>>test;
      delete teXX;
    }

Masz błąd w warunku.
Eh, a przejrzałem dokładnie resztę żeby zobaczyć czy poza tablicę nie wychodzisz... a tu takie coś prosto przed oczami.

blad w warunku zrobilem specjalnie zeby nic nie komentowac i zmniejszyc sobie zakres sprawdzania potencjalnych miejsc z bledem, problem nadal aktualny

0

Że jak? Przecież w ten sposób liczysz md5 śmieci z pamięci, nie wiem jak to ma w sprawdzaniu pomóc...

0
programista87 napisał(a)

Że jak? Przecież w ten sposób liczysz md5 śmieci z pamięci, nie wiem jak to ma w sprawdzaniu pomóc...

raczej nie ze smieci a z pustej wiadomosci, bo do wiadomosci dokleja sie bit = 1, i jako ze wiadomosc ma dlugosc=0 to dokleja sie same 0 i powstaje blok: <512b>[1,<511b>0] i w ten wlasnie o to sposob chcialem sobie ulatwic. o ile dobrze pamietam to nawet po podaniu wiadomosci nadal dostaje rozne wyniki

--

o blad podejzewam teraz linijke z pliku md5.cpp

  b=b+lor(a+f+k[i]+w[g],r[i]); 

wiec zarazem metode:

 inline uint32 md5::lor(uint32 x,int c){
       return (x << c) | (x >> (32-c));
   }

, ale nadal nie widze nic zlego - pewnie falszywy trop:(


zauważyłem tez ze pierwsze wypisanie na ekran tylko rozni sie od pozostalych (np wypisujac 100 razy dostaje pierwszy raz inna wartosc a 99razy inna, lecz ciagle te sama)

po prostu sam nie wiem o co chodzi :(

0

No rzeczywiście... to ostatnia hipoteza - używasz starego GCC z dev-cpp i on po prostu źle kompiluje.
Bo błędu tu nie widzę żadnego a kod działa...

0

Yyy jednak nie, za dwoma pierwszymi uruchomieniami wszystko ok, za trzecim inny wynik, ale za każdym razem ten sam...

0

const uint md5::le_fix[4]={3,1,-1,-3};
To masz zle, bo przypisujesz liczby ze znakiem do zmiennych bez znaku, moze jeszcze cos jest zle, ale na razie nie widze.

0
t0m_k-tmp napisał(a)

const uint md5::le_fix[4]={3,1,-1,-3};
To masz zle, bo przypisujesz liczby ze znakiem do zmiennych bez znaku, moze jeszcze cos jest zle, ale na razie nie widze.

faktycznie, jednak po poprawieniu dalej 'wypluwa' coraz to inne wartosci z kazdym uruchomieniem

1 użytkowników online, w tym zalogowanych: 0, gości: 1