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

Шифрование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считывание текста из файла в массив http://www.cyberforum.ru/cpp-beginners/thread393348.html
Привет всем, рябят помогите пожалуйста сделать программу, нужно из файла считать текст, так чтобы каждый символ был представлен в виде аски символа и записан в массив, за ранее спасибо :) Добавлено через 17 часов 9 минут апаньки...
C++ Поиск по графу в Глубину С++ Задача: организовать поиск в глубину через рекурсивную функцию. вводимые данные матрица связанности вершин графа. http://www.cyberforum.ru/cpp-beginners/thread393335.html
Почему последний символ в файле удваивается. C++
#include <iostream> #include <fstream> using namespace std; class CipTxt{ public: char *AlphaOne; char *AlphaTwo;
Графика в C++ C++
в двух словах : Хочу воплотить в жизнь такую картину ,"беспорядочно падают снежинки ображуя сугробы" =) все это дело в с++ конечно же отсюда вытикают 2 вопроса 1)как подключить graphics.h 2)как же воплотить эту идею по средствам кода(я совсем новичек и каких либо грандиозных идей по поводу создания такой картины нету, подтолкните меня )
C++ Отформатировать текст, находящийся в файле http://www.cyberforum.ru/cpp-beginners/thread393321.html
помогите,решить программу..на языке С... написать на Code:Blockse
C++ Вывод списка файлов с информацией Здрасьте, люди добрые!!! Не знаю как при работе с ncurses в си под linux вывести в окно список всех файлов каталога с минимальной информацией. :wall: Оч надо!!!Помогите!!!!:sorry: подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.11.2011, 02:40     Шифрование
две функции отличаются только одной строчкой, в которой освобождается ранее выделенная память. Так что если немного покумекать над освобождением памяти, то вполне можно оставить для шифровки и расшифровки одну функцию.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char *crypt(char *str)
{
    int n = strlen(str);
    char *buf = calloc(n + 1, sizeof(char));
    if ( !buf )
        exit( -1 );
 
    for (int i = 0; i < n; ++i)
        if ( i % 2 )
            buf[ i - 1] ^= str[ i ];
        else
            buf[ i + 1] ^= str[ i ];
            
    buf [ n - 1] = (n % 2) ? buf [ n ] : buf [ n - 1];
    buf [ n ] = (n % 2) ? 0 : buf [ n ];
    
    return buf;
}
 
char *encrypt(char *str)
{
    int n = strlen(str);
    char *buf = calloc(n + 1, sizeof(char));
    if ( !buf )
        exit( -1 );
 
    for (int i = 0; i < n; ++i)
        if ( i % 2 )
            buf[ i - 1] ^= str[ i ];
        else
            buf[ i + 1] ^= str[ i ];
 
    buf [ n - 1] = (n % 2) ? buf [ n ] : buf [ n - 1];
    buf [ n ] = (n % 2) ? 0 : buf [ n ];
 
    free(str);
    return buf;
}
 
int main(void)
{
    char *str = "this is string";
    char *str1 = "this is none!";
    char *buf;
 
    buf = crypt(str);
    printf("%s\n", buf);
    buf = encrypt(buf);
    printf("%s\n", buf);
    free(buf);
    buf = crypt(str1);
    printf("%s\n", buf);
    buf = encrypt(buf);
    printf("%s\n", buf);
    free(buf);
 
    return 0;
}
memtest


==12913== Memcheck, a memory error detector
==12913== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==12913== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info
==12913== Command: ./prosto
==12913==
htsii stsirgn
this is string
htsii sonen!
this is none!
==12913==
==12913== HEAP SUMMARY:
==12913== in use at exit: 0 bytes in 0 blocks
==12913== total heap usage: 4 allocs, 4 frees, 58 bytes allocated
==12913==
==12913== All heap blocks were freed -- no leaks are possible
==12913==
==12913== For counts of detected and suppressed errors, rerun with: -v
==12913== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 7)


Добавлено через 14 минут
хоть бы и
так
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char *crypt(char *str)
{
    int n = strlen(str);
    char *buf = calloc(n + 1, sizeof(char));
    if ( !buf )
        exit( -1 );
 
    for (int i = 0; i < n; ++i)
        if ( i % 2 )
            buf[ i - 1] ^= str[ i ];
        else
            buf[ i + 1] ^= str[ i ];
 
    buf [ n - 1] = (n % 2) ? buf [ n ] : buf [ n - 1];
    buf [ n ] = (n % 2) ? 0 : buf [ n ];
 
    free(str);
    return buf;
}
 
int main(void)
{
    char *str = malloc(sizeof("this is string"));
        if ( !str )
            exit ( -1 );
    strcpy(str, "this is string\0");
    char *buf;
 
    buf = crypt(str);
    printf("%s\n", buf);
    buf = crypt(buf);
    printf("%s\n", buf);
    free(buf);
 
    return 0;
}
 
Текущее время: 01:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru