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

Шифровка табличной заменой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Виртуальные функции http://www.cyberforum.ru/cpp-beginners/thread144550.html
Объясните пожалуйста зачем нужны чисто виртуальные функции?
C++ встроенные функции (inline) скажите что значит встроенные функции? не пойму. class a { int x,y; public: void get_x(int i,int j) //как я понимаю это встроенная функция, а тогда что такое inline функция? { x = i; y = j; http://www.cyberforum.ru/cpp-beginners/thread144549.html
Вычислить биссектрисы треугольника C++
Составить программу, которая вычисляет биссектрисы треугольника со сторонами а, b, с по формулам:
C++ очень нужно решить на с++
1)Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом α при большем основании 2)Из трех данных чисел выбрать наименьшее и наибольшее и посчитать их разницу и среднее арифметическое. 3)Найти сумму четных чисел и произведение нечетных от 1 до n. 4)Найти сумму ряда с точностью e=10-4, общий член которого an=10n/n! 5)Найдите номер первого члена последовательности...
C++ Нахождение наибольшего общего делителя двух натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread144527.html
1)Используя функцию NOD нахождения наибольшего общего делителя двух натуральных чисел, сократить данную обычную дробь M / N. / / Возвращать наибольший общий делитель двух чисел int NOD(int vl, int v2) { while (v2) { int temp=v2; v2=vl%v2; vl=temp;
C++ Процедуры и функции Дали задание составить программу с использованием процедур и функций на С++ (я понятия не имею как её сделать) http://godday.ucoz.ru/tty.jpg вот сама формула по которой надо сделать программу, кто шарит помогите! подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.07.2010, 17:17     Шифровка табличной заменой
Не то, чтобы по заданию. Сделал так, как самому интереснее было...
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define LETTERS "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789 -_+='.,;:!@#$%^&*()[]{}/|\\\"\t\n"
 
int letter_index(const char * s, char ch){
    char * pFound;
    
    return ( ( pFound = strchr(s, ch) ) == NULL ) ? -1 : pFound - s;
}
 
char * encrypt(char * buf, const char * letters, const char * key){
    int bufPos, keyPos;
    int lettersLen = strlen(letters);
    int keyLen = strlen(key);
    const char * pKey;
    char * pBuf;
        
    pKey = key;
    pBuf = buf;
    while ( *pBuf ){
        if ( ( bufPos = letter_index(letters, *pBuf) ) < 0 )
            return NULL;
        if ( ( keyPos = letter_index(letters, *pKey) ) < 0 )
            return NULL;
        if ( letters[keyPos] & 1 ){
            if ( ( bufPos = bufPos + keyPos) >= lettersLen )
                bufPos -= lettersLen;
        }
        else {
            if ( ( bufPos = bufPos - keyPos ) < 0 )
                bufPos += lettersLen;
        }
        *pBuf++ = letters[bufPos];
        ++pKey;
        if ( pKey >= key + keyLen )
            pKey = key;
    }
    return buf;
}
 
char * decrypt(char * buf, const char * letters, const char * key){
    int bufPos, keyPos;
    int lettersLen = strlen(letters);
    int keyLen = strlen(key);
    const char * pKey;
    char * pBuf;
        
    pKey = key;
    pBuf = buf;
    while ( *pBuf ){
        if ( ( bufPos = letter_index(letters, *pBuf) ) < 0 )
            return NULL;
        if ( ( keyPos = letter_index(letters, *pKey) ) < 0 )
            return NULL;
        if ( letters[keyPos] & 1 ){
            if ( ( bufPos = bufPos - keyPos ) < 0 )
                bufPos += lettersLen;
        }
        else {
            if ( ( bufPos = bufPos + keyPos) >= lettersLen )
                bufPos -= lettersLen;
        }
        *pBuf++ = letters[bufPos];
        ++pKey;
        if ( pKey >= key + keyLen )
            pKey = key;
    }
    return buf;
}
 
int main(int argc, char ** argv){
    char testStr[] = "Man Page Lookup searches for man pages name and section as given in the selection menu and the query dialog. Apropos Keyword "
        "Search searches the database for the string given in the query dialog. There are also several hypertext links provided as short-cuts to "
        "various queries: Section Indexes is apropos listings of all man pages by section. Explanations of Man Sections contains pointers to the "
        "intro pages for various man sections.";
    
    printf("\nString:    %s\n", testStr);
    printf("\nEncrypted: %s\n", encrypt(testStr, LETTERS, "qwerty"));
    printf("\nDecrypted: %s\n", decrypt(testStr, LETTERS, "qwerty"));
    
    exit(EXIT_SUCCESS);
}
Интересно, какой нибудь средненький шифровальщик хоть час на этот шифр потратил бы, или прям с хода бы разгадал?
 
Текущее время: 02:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru