Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Шифрование файла.  (Прочитано 1498 раз)

0 Пользователей и 1 Гость просматривают эту тему.

ywaw

  • Автор темы
  • Гость
Шифрование файла.
« : 30 Мая 2011, 13:11:30 »
Мне нужно "тупо" зашифровать один файл.
Подскажите простейший путь к этому.

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Re: Шифрование файла.
« Ответ #1 : 30 Мая 2011, 15:04:39 »
rar без сжатия с паролем. Тупо.
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #2 : 30 Мая 2011, 15:21:12 »
Под Ubuntu rar есть?

Оффлайн apl

  • Активист
  • *
  • Сообщений: 689
  • Calculate linux
    • Просмотр профиля
    • Атеисты и безбожники
Re: Шифрование файла.
« Ответ #3 : 30 Мая 2011, 15:25:40 »
man crypt
Core2Duo 6600, 4Gb RAM, 1000Gb HDD, Nvidia GeForce 8800 GTS, Calculate linux

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #4 : 30 Мая 2011, 15:31:05 »
man crypt
Спасибо. Похоже то что нужно.
Осталось только маню перевести  :-\

Оффлайн Alopex

  • Участник
  • *
  • Сообщений: 160
  • зима!!!
    • Просмотр профиля
    • forum.runtu.org
Re: Шифрование файла.
« Ответ #5 : 30 Мая 2011, 15:59:28 »
также
man mcrypt
сферический саппорт в информационном вакууме

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #6 : 30 Мая 2011, 22:37:29 »
crypt меня не устроил, слишком калибр большой, для шифрования одного файла.
Пришлось писать самому, вот что за вечер накропал:
// файл krypt.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#define BUFSIZE 4096
#define MODE 0644

int in_fd, out_fd, n_chars;
char buf[BUFSIZE];
int crptRnd = 1;

void oops(char*s1, char*s2) { // ошибки ввода-вывода
    fprintf(stderr, "ERROR: ", s1);
    perror(s2);
    exit(1); }

char crptRandom(){ // случайный символ
    int x = crptRnd * 0x10450405 >> 15;
    crptRnd = x + 1;
    return (char)crptRnd; }

void crptBlock() { // шифровать блок
    int  i;
    for (i = 0; i != n_chars; i++) buf = buf ^ crptRandom(); }

int main(int ac, char*av[]) {
    int i;
    if(ac != 4){ fprintf(stderr,"Usage: password source destination
",*av); exit(1); }
    for (i = 0; i < strlen(av[1]); i++) crptRnd += av[1];
    if((in_fd=open(av[2],O_RDONLY)) == -1) oops("Cannot open ",av[2]);
    if((out_fd=creat(av[3],MODE)) == -1) oops("Cannot create ",av[3]);
    while((n_chars=read(in_fd,buf,BUFSIZE))>0) {
        crptBlock();
        if(write(out_fd,buf,n_chars) != n_chars) oops("Write error to  ",av[3]); }
    if(n_chars == -1) oops("Read error from",av[2]);
    if(close(in_fd) == -1 || close(out_fd) == -1) oops("Еrror closing files"," "); }

Компилируем в терминале: gcc krypt.c -o krypt
Теперь можно шифровать (опять же в терминале):
./krypt <пароль>  <имя-файла>  <имя-зашифрованного-файла>
В целях предотвращения шифрования нужных данных шифруемый файл сохраняется, удаляем ручками:
rm -f <имя-файла>
Расшифровка в обратном порядке: ./krypt <пароль>  <имя-зашифрованного-файла>  <имя-файла>
Используйте лучшее!!  :)


Пользователь решил продолжить мысль 30 Мая 2011, 23:13:06:
Ошибка при копировании произошла  :-[, шифрование блока надо так:
void crptBlock() { // шифровать блок
    int  i;
    for (i = 0; i != n_chars; i++) buf = buf ^ crptRandom(); }

Пользователь решил продолжить мысль 30 Мая 2011, 23:25:10:
Короче глюк какой-то при копировании через буфер.
В процедуре crptBlock() в цикле for должно быть buf[i-индекс]
Наверно за тэг форматирования принимает. Щаз поправлю:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#define BUFSIZE 4096
#define MODE 0644

int in_fd, out_fd, n_chars;
char buf[BUFSIZE];
int crptRnd = 1;

void oops(char*s1, char*s2) { // ошибки ввода-вывода
    fprintf(stderr, "ERROR: ", s1);
    perror(s2);
    exit(1); }

char crptRandom(){ // случайный символ
    int x = crptRnd * 0x10450405 >> 15;
    crptRnd = x + 1;
    return (char)crptRnd; }

void crptBlock() { // шифровать блок
    int  ind;
    for (ind = 0; ind != n_chars; ind++) buf[ind] = buf[ind] ^ crptRandom(); }

int main(int ac, char*av[]) {
    int ind;
    if(ac != 4){ fprintf(stderr,"Usage: password source destination\n",*av); exit(1); }
    for (ind = 0; ind < strlen(av[1]); ind++) crptRnd += av[1][ind];
    if((in_fd=open(av[2],O_RDONLY)) == -1) oops("Cannot open ",av[2]);
    if((out_fd=creat(av[3],MODE)) == -1) oops("Cannot create ",av[3]);
    while((n_chars=read(in_fd,buf,BUFSIZE))>0) {
        crptBlock();
        if(write(out_fd,buf,n_chars) != n_chars) oops("Write error to  ",av[3]); }
    if(n_chars == -1) oops("Read error from",av[2]);
    if(close(in_fd) == -1 || close(out_fd) == -1) oops("Еrror closing files"," "); }
// конец krypt.c
Вот теперь все так
« Последнее редактирование: 30 Мая 2011, 23:25:10 от ywaw »

Оффлайн apl

  • Активист
  • *
  • Сообщений: 689
  • Calculate linux
    • Просмотр профиля
    • Атеисты и безбожники
Re: Шифрование файла.
« Ответ #7 : 31 Мая 2011, 01:04:49 »
Что такое слишком большой калибр?
Core2Duo 6600, 4Gb RAM, 1000Gb HDD, Nvidia GeForce 8800 GTS, Calculate linux

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #8 : 31 Мая 2011, 07:52:36 »
Что такое слишком большой калибр?
Слишком много возможностей для моего случая.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Шифрование файла.
« Ответ #9 : 31 Мая 2011, 08:12:20 »
Устанавливаем пакет "seahorse-plugins".

После чего в контекстном меню Nautilus появляются пункты, связанные с шифрованием и подписью файлов. Просто, стандартно, переносимо.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн apl

  • Активист
  • *
  • Сообщений: 689
  • Calculate linux
    • Просмотр профиля
    • Атеисты и безбожники
Re: Шифрование файла.
« Ответ #10 : 31 Мая 2011, 08:12:39 »
Не проще ли набрать одну команду, чем писать свои шифровальщики?
У вас какой алгоритм шифрования в исходнике?
Core2Duo 6600, 4Gb RAM, 1000Gb HDD, Nvidia GeForce 8800 GTS, Calculate linux

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #11 : 31 Мая 2011, 08:38:34 »
Устанавливаем пакет "seahorse-plugins".

После чего в контекстном меню Nautilus появляются пункты, связанные с шифрованием и подписью файлов. Просто, стандартно, переносимо.
Установил через apt-get.  Однако в контекстном меню Nautilus ни чего не появилось.

Оффлайн zhenya0007

  • Активист
  • *
  • Сообщений: 763
    • Просмотр профиля
Re: Шифрование файла.
« Ответ #12 : 31 Мая 2011, 08:39:52 »
перегрузить комп нада, чтобы появилось.

Ну а проще всего консольный GPG, создай ключи и вперед

ywaw

  • Автор темы
  • Гость
Re: Шифрование файла.
« Ответ #13 : 31 Мая 2011, 08:50:28 »
У вас какой алгоритм шифрования в исходнике?
Гаммирование по исключающему ИЛИ.

Оффлайн apl

  • Активист
  • *
  • Сообщений: 689
  • Calculate linux
    • Просмотр профиля
    • Атеисты и безбожники
Re: Шифрование файла.
« Ответ #14 : 31 Мая 2011, 08:56:24 »
А зачем? Это ведь очень ненадежно!
Core2Duo 6600, 4Gb RAM, 1000Gb HDD, Nvidia GeForce 8800 GTS, Calculate linux

 

Страница сгенерирована за 0.03 секунд. Запросов: 23.