FAQ по C/C++/Visual C++
![]() Работа с сетью![]() ![]() Как хешировать данные |
Составители: SUnteXx, Leprecon |
| Как хешировать данные | |||
|
Ударила мне тут в голову нечто желтое и пенное (не все то пиво, что желтое и пенное), и решил помочь человеку из форума зашифровать данные. Этому челу посоветовали шифровать методом XOR. Именно это я и сделал. Вот что получилось у меня: #include <stdio.h>
#include <conio.h>
void code(char* lpName, char* lpPassword, char* lpResult)
// Функция хеширует данные, т.е. превращает в нечто страшное %), не понятное без поллитра!
{
unsigned int a = 0, b = 0;
a = 0;
while (lpResult[a]) // мое извращение. читается как "пока существует строка lpResult"
{
b = 0;
while (lpPassword[b]) // пока существует строка lpPassword
{
lpResult[a] ^= (lpPassword[b] + (a*b)); // хэшируем простым XOR'ом
b++; // идем к следующему символу lpPassword
}
a++; // идем к следующему символу lpResult
}
}
void main(void)
{
char szName[100];
char szPassword[20];
char szResult[100];
printf("Enter your name: "); // просим юзера ввести свое имя
scanf("%s", szName); // вводит юзер имя
printf("Enter your password: "); // просим ввести пароль
scanf("%s", szPassword); // вводит
unsigned int a = 0;
/*** Далее идет функция копирования одной строки в другую ***/
while (szName[a])
{
szResult[a] = szName[a];
a++;
}
szResult[a] = 0;
/*** все, скопировали. Можно так же юзать strcpy(szResult, szName) ***/
// Просто захотелось поизвращаться %))
code(szName, szPassword, szResult); // хэшируем данные
printf ("\r\n\r\nEncoded: %s\r\n", szResult); // ввыводим получившуюся хрень
code(szName, szPassword, szResult); // расхэшируем данные
printf ("Decoded: %s\r\n", szResult); // выводим получившуюся хрень
printf ("\r\n", szResult); // выводим пробел
printf("Press any key to continue"); // просим нажать any key на клавиатуре
while (!_getch()); // ждем, пока юзверь не кликнул any key
return;
}А далее не по делу :)Тут базарил с девушкой по телефону, параллельно писАл прогу. Потестил, вроде работает. Удивился, но да ладно. Спрашиваю у нее: - Скажи какое-нибудь имя - Саша, - говорит она (это ее имя - прим. меня) - А теперь пароль - Саша, - говорит она (она человек далекий от компьютера и пароли приходится придумывать редко - прим. меня) А сам тем временем пока она говорит имена и пароли ввожу их. Некоторые слова так хорошо шифровались, что было весело. Теперь попробуйте ввести эти данные: Name: Sasha Password: Sasha Как вам ответ? У меня получилось "<+3:)". Клевый смайл, не так ли? | |||
|
|
FAQ составлен по материалам Форума на Исходниках.Ру. Copyright © 2002 by Sources.ru. All rights reserved. |