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

ошибка в шифровании - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Экспоненциальная функция http://www.cyberforum.ru/cpp-beginners/thread322413.html
Добрый день, необходимо запрограммировать функцию 1-exp(-at) Основной вопрос как описать экспоненту ? Простенькие задачки без экспоненты разобрался как сделать, а вот когда добавляю exp в формулу программа не понимает.
C++ не могу разобраться с typedef помогите разобраться typedef задает синоним типа только? например: typedef int myint; тут понятно все, вместо int можно писать myint а если написать http://www.cyberforum.ru/cpp-beginners/thread322401.html
Структуры в С++ C++
Добрый вечер, не могли бы кто нибудь мне помочь написать код программы, следующего задания: Описать структуру с именем ZNAK содержащие следующие поля: -фамилия и имя -знак зодиака -дата рождения(массив из 3-х чисел) Написать программу выполняющую следующие действия: -ввод с клавиатуры данных в массив состоящих из 8 элементов типа ZNAK; записи должны быть упорядочены по знакам зодиака...
C++ cin.getline
Здравствуйте. Есть вот программа: #include <iostream> // #include <cmath> // #include <conio.h> // // using namespace std; // /////////////////////// int main()
C++ ссылки http://www.cyberforum.ru/cpp-beginners/thread322394.html
как здесь привести к интовому виду,чтобы выдавало 100? # include <iostream> using namespace std; void f(int &i) { i = 100; }
C++ нужно перевести с Паскаля на С++ Найти в массиве: 1) сумму элементов с нечётными номерами 2) Сумму элементов между первым и последним отрицательными элементами 3) в массиве отрицательные элементы заменить нулями и переставить в конец uses crt; const n=10; var a:arrayof real; подробнее

Показать сообщение отдельно
admsasha
12 / 12 / 4
Регистрация: 11.06.2011
Сообщений: 199
19.06.2011, 08:32     ошибка в шифровании
Пытаюсь сделать шифрование через SLL, проблема в том, что если задавать строку для шифрования большую, то строка обрезается (маленькие строки нормально работают). Помогите разобраться что и где я ошибся

Encrypt и Decrypt всяты с доки по openssl
myEncrypt и myDecrypt - это мои функии, в качестве параметра string и выводят string.
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <openssl/des.h>
#include <unistd.h>
#include <string>
#include <string.h>
 
using namespace std;
 
char * Encrypt( char *Key, char *Msg, int size){
 
        static char*    Res;
        int             n=0;
        DES_cblock      Key2;
        DES_key_schedule schedule;
 
        Res = ( char * ) malloc( size );
 
        /* Prepare the key for use with DES_cfb64_encrypt */
        memcpy( Key2, Key,8);
        DES_set_odd_parity( &Key2 );
        DES_set_key_checked( &Key2, &schedule );
 
        /* Encryption occurs here */
        DES_cfb64_encrypt( ( unsigned char * ) Msg, ( unsigned char * ) Res,
                           size, &schedule, &Key2, &n, DES_ENCRYPT );
 
         return (Res);
}
 
 
char * Decrypt( char *Key, char *Msg, int size){
 
        static char*    Res;
        int             n=0;
 
        DES_cblock      Key2;
        DES_key_schedule schedule;
 
        Res = ( char * ) malloc( size );
 
        /* Prepare the key for use with DES_cfb64_encrypt */
        memcpy( Key2, Key,8);
        DES_set_odd_parity( &Key2 );
        DES_set_key_checked( &Key2, &schedule );
 
        /* Decryption occurs here */
        DES_cfb64_encrypt( ( unsigned char * ) Msg, ( unsigned char * ) Res,
                           size, &schedule, &Key2, &n, DES_DECRYPT );
 
        return (Res);
 
}
 
string myEncrypt( char *Key, string MsgPlain){
    char* text;
 
    text =(char*) malloc(MsgPlain.length()+1);
    strncpy(text, MsgPlain.c_str(),MsgPlain.length());
 
    char* encrypted =  Encrypt(Key,text,strlen(text)+1);
 
    free(text);
 
    return string(encrypted);
 
}
 
 
string myDecrypt( char *Key, string MsgBase64){
    char* text;
 
    text =(char*) malloc(MsgBase64.length()+1);
    strcpy(text, MsgBase64.c_str());
 
    char* decrypted =  Decrypt(Key,text,strlen(text)+1);
    free(text);
    return string(decrypted);
}
 
 
 
int main(){
    string a;
    string b;
    string c;
 
    a="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
    b=myEncrypt("250420",a);
    c=myDecrypt("250420",b);
 
    printf("a = %s\n",a.c_str());
    printf("b = %s\n",b.c_str());
    printf("c = %s\n",c.c_str());
 
    return (0);
}
Вывод
a = 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
b = 'DW#`CLу2#eWP07D.@90.~ZTHb)m9wzAsmW+j5PuoZǩ#_B@
/U kw#?]bמ#+vSɥȓBfgSA
c = 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru