Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Шифрование строки по паролю - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не пойму как работает класс http://www.cyberforum.ru/cpp-beginners/thread157470.html
Hi all Не пойму как работает пример #include <stdafx.h> #include <conio.h> using namespace std; class String { public: char* ptr; String(char* s){ int n = strlen(s);
C++ Начинаю изучать C/C++ Здравствуйте. Вот решил изучать C/C++, подскажите какой лучше из них, какой литературы пользоваться и какой компилятор, среда программирования выбрать. Я в этом языке полный ноль. Спасибо! http://www.cyberforum.ru/cpp-beginners/thread157459.html
C++ Использование нововведений C++0x
Красиво на самом деле... Вопрос, есть-ли резон использовать так, или новый стандарт стоит использовать в меру? #include <iostream> template <typename T> T Sum(T n, T m) { return n+m; }
Повтор случайного числа в строке матрицы C++
#include <iostream> #include <ctime> using namespace std; int main() { const int COLUMN = 8; const int ROW = 22; int matrix; srand(time (NULL));
C++ Исходник разблокировки клавиатуры http://www.cyberforum.ru/cpp-beginners/thread157419.html
Доброго время суток. И снова я пришел просить у вас помощи. Тут на досуге искал исходные коды разблокировки клавиатуры.(для программы по борьбе с порно вирусами ) и никак не могу найти зы только...
C++ Забыл, как объявить функцию с тем же названием? Забыл, как объявить ещё одну функцию с тем же названием? подробнее

Показать сообщение отдельно
nubo
113 / 70 / 8
Регистрация: 31.07.2010
Сообщений: 334

Шифрование строки по паролю - C++

05.08.2010, 10:07. Просмотров 760. Ответов 6
Метки (Все метки)

В продолжение этой темы.
Всем привет. Выбрал время для дальнейших поползновений в неблагодарном деле изучения C++

Ну и очередной затык. Никак не могу усвоить работу с типами данных. Вот до сюда все вроде двигалось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <string>
#include <ctime>
 
using namespace std;
 
 
int encodePass(const char* main_pass, const char* new_pass)
{
 
    int code;
    string text;
    srand(time(0));
    size_t new_len  = strlen(new_pass);
    size_t main_len = strlen(main_pass);
 
    for(int j = 0; j < main_len; ++j)
    {
        code = char(main_pass[j]);
 
        for(int i = 0; i < code; ++i)
            text  += char(33 + rand() % 143);
 
        text += new_pass[j];
    }
 
    cout << "Result: " << text << endl;
    return 0;
 
}
 
int main()
{
 
        string select, main_pass, new_pass;
        cout << "Select operation and press Enter\nencode - 1, decode - 2  ";
        getline(cin, select);
 
 
     while(true)
     {
        if(select == "1")
        {
            cout << "Insert main password: ";
            getline(cin, main_pass);
            cout << "Insert new password: ";
            getline(cin, new_pass);            
            encodePass(main_pass.c_str(), new_pass.c_str());
            break;
        }
        
        if(select == "2")
        {
           // decodePass(main_pass.c_str());
           break;
        }
        else
        {
            cout << "Select operation and press Enter\nencode - 1, decode - 2  ";
            getline(cin, select);
        }
     }          
  
        return 0;
}
то есть алгоритм такой - символы шифруемого пароля расставляются на позиции, соответствующие коду символа основного пароля. Промежутки заполняются всяким мусором.

И все бы ничего, но если шифруемый пароль длиннее основного, то будет фиаско. Идея такая, что нужно повторять основной пароль до тех пор, пока его длина не превысит шифруемый.

И вот тут затык с типами данных. На PHP это решилось бы несколькими строчками:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function test($text1, $text2)
{
  while(strlen($text1) < strlen($text2))
    $text1 .= $text1;
   
    echo $text1;
}
 
$text1 = 'короткий';
$text2 = 'длииииииииииииииииииииииииииииииииииинный';
 
test($text1, $text2);
а тут никак. Я даже варианты решений выкладывать не хочу, что бы не портить вам нервы

Проблема в том, что для конкатенации нужен тип string, как я понял. А для определения длины функцией strlen() - тип char. А они в одном цикле.

Скорее всего такой алгоритм тут неуместен, но как по другому - ума не приложу.
Прошу прощения за кучу букаф и спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru