Szyfrowanie cz.2

0

Zastosowałem sie do waszych wskazowek(patrz C++ Builder-szyfrowanie) i teraz sprawdzanie hasla wpisanego przez uzytkownika wyglada tak teraz wyglada u mnie tak:

<font color="red"><font size="12">TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );
has2 = ini->ReadString("haslo","1","kowal");
has3 = new char[ has2.Length()+1];
strcpy(has3,has2.c_str());

delete ini;
pas = new char[ Edit1->Text.Length() + 1];
strcpy(pas, Edit1->Text.c_str() );
szyfr(pas);

if(has3==pas){</span></span>

a czesc zapisujaca haslo podane przez uzytkownika tak:

<font color="red"><font size="12">TIniFile *ini;
ini = new TIniFile(ChangeFileExt( Application->ExeName, ".INI" ) );

has = new char[ Edit2->Text.Length() + 1 ];
strcpy(has, Edit2->Text.c_str() );
szyfr(has);
ini->WriteString("haslo","1",has);
delete ini; </span></span>

zmienne sa zadeklarowane w ten sposob:

<font color="red"><font size="12">char *pas, *has, has3;
void szyfr(char
haslo)
{
const int A = 11; // dowolne > 0
const int B = 17; // dowolne > 0

int hash = 0;
for (int i = 0; haslo[i] != '\0'; i++)
hash += haslo[i] * hash + A;
for (int i = 0; haslo[i] != '\0'; i++)
{
haslo[i] += hash;
hash += haslo[i] * hash + B;
}</span></span>

I nie wiem dlaczego podanie hasla takiego jakie wczesniej zapisalem(czyli warunek:<font color="red"> <font size="12">if(has3==pas)</span></span>) nie jest spelnione. Ustawile break point i wyswietla sie: "cos"="cos" wiec warunek spelnione a on dziala jak by byl falsz. O co chodzi???? czy ktos mi to wyjasni ?????

Aha!!!! jak ktos nie wie o co chodzi to problem opisalem 12 tematow nizej. Please niech ktos pomoze.

//Piter następnym razem pofatyguj się i podaj link do poprzedniego teamtu. nikt nie będzie liczył, tym bardziej, że odstęp pewnie się zmieni. tym razem robię to za ciebie. http://4programmers.net/Forum/viewtopic.php?id=52544
pq

0

Bo popelniasz blad przy porownywaniu dwoch lancuchow i porownujesz
wskazniki zamiast zawartosci.

char * tekst1;
char * tekst2;

...
// Powinno byc:
if (strcmp(tekst1, tekst2) == 0)

// Zamiast:
if (tekst1 == tekst2)
0

Dzieki krolik!!!!
w koncu dziala. Widze, że znasz sie na rzeczy. Podałbyś mi maila, to bym mogl z toba skonsultowac jakies ewentualne sprawe??

0

Ty podaj swojego najpierw. Zwykle nie ujawniam swoich danych ludziom ktorych nie znam (bez urazy). A na maile zwykle niestety odpowiadam z duzym opoznieniem. :(

0

Moj E-mail to larryguy@poczta.onet.pl . Spoko ja tez odpowiadam raczej rzadko! Czekam na twoj adres. Pozdrawiam.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.