C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Как хешировать данные / Защита и сокрытие информации / Алгоритмы

Как хешировать данные
A: (SUnteXx)
Оригинальная ссылка: нету

Ударила мне тут в голову нечто желтое и пенное (не все то пиво, что желтое и пенное), и решил помочь человеку из форума зашифровать данные. Этому челу посоветовали шифровать методом 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:)". Клевый смайл, не так ли?