Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Шифрование изображения   Найти похожие ветки 

 
oren_yastreb   (2011-03-11 15:57) [0]

Добрый день!

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

Подскажите как зашифровать файл bmp? Чтобы он не открывался на просмотр. Планируется что при сохранение файл будет шифроваться а при просмотре сначала расшифровываться а потом открываться.


 
clickmaker ©   (2011-03-11 15:58) [1]

проще всего заархивировать его с паролем


 
oren_yastreb   (2011-03-11 16:09) [2]

непойдет


 
oren_yastreb   (2011-03-11 16:12) [3]

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


 
Smile   (2011-03-11 16:17) [4]

> надо шифровать bmp файл

Шифруется точно так же как и любая другая информация.
:)


 
Anatoly Podgoretsky ©   (2011-03-11 16:22) [5]

> oren_yastreb  (11.03.2011 15:57:00)  [0]

Вот тут то мы его и украдем


 
Anatoly Podgoretsky ©   (2011-03-11 16:22) [6]

> oren_yastreb  (11.03.2011 16:12:03)  [3]

Точно описание типичного архиватора.


 
Anatoly Podgoretsky ©   (2011-03-11 16:23) [7]

> Smile  (11.03.2011 16:17:04)  [4]

EFS?


 
sniknik ©   (2011-03-11 16:30) [8]

> а открывался только через программу, которая будет его расшифровывать
а копирование экрана программа тоже будет "шифровать"?


 
Медвежонок Пятачок ©   (2011-03-11 16:37) [9]

запиши все байты бмп задом наперед.
а потом [8]


 
oren_yastreb   (2011-03-12 10:59) [10]

вот как получилось решить проблему

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure EncryptBMP(var BMP: TBitmap; Key: Integer);
var
  BytesPorScan: Integer;
  w, h: integer;
  p: pByteArray;
begin
  try
    BytesPorScan := Abs(Integer(BMP.ScanLine[1]) -
      Integer(BMP.ScanLine[0]));
  except
    raise Exception.Create("Error");
  end;
  RandSeed := Key;
  for h := 0 to BMP.Height - 1 do
  begin
    P := BMP.ScanLine[h];
    for w := 0 to BytesPorScan - 1 do
      P^[w] := P^[w] xor Random(256);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile("G:\Шифрование\29334.bmp");
EncryptBMP(bmp,StrToInt(Edit1.Text));
bmp.SaveToFile("G:\Шифрование\29334.bmp");
bmp.Free;
ShowMessage("Ready!");
end;

end.


 
sniknik ©   (2011-03-12 12:13) [11]

> решить проблему
???
ты только, что ее себе создал. из ничего...

битмап как контейнер данных, оригинально...  

> xor Random(256);
? дескрипт так понимаю не нужен.


 
OW ©   (2011-03-14 16:20) [12]


> > xor Random(256);
> ? дескрипт так понимаю не нужен.
>

так randomize вроде нет :)


 
clickmaker ©   (2011-03-14 16:37) [13]

> xor Random(256);

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


 
Smile   (2011-03-14 16:37) [14]

> Anatoly Podgoretsky ©   (11.03.11 16:23) [7]

Не вижу никакой разницы в алгоритмах шифрования какой бы то ни было информации.
Будь то DOC, XLS. BMP, JPEG, ...  или какая либо другая информация.

>oren_yastreb   (11.03.11 16:12) [3]
> а открывался только через программу, которая будет его расшифровывать

так это проблема твоей программы
:)


 
sniknik ©   (2011-03-14 17:48) [15]

> так randomize вроде нет :)
ага, и RandSeed := Key; поначалу не заметил ;(

дико раскаиваюсь... ;)


 
oldman ©   (2011-03-14 20:35) [16]


> Подскажите как зашифровать файл bmp? Чтобы он не открывался
> на просмотр.


Заголовок поменяй. Делов-то...


 
clickmaker ©   (2011-03-14 22:24) [17]

> Заголовок поменяй. Делов-то...

это не спортивно. Да и любой школьник взломает


 
Palladin ©   (2011-03-15 01:14) [18]

это будет типа "свой формат"...
хрениум программикус отакэ...


 
Германн ©   (2011-03-15 03:24) [19]

И пофигу стандартное предупреждение Дельфийского хелпа  о возможных проблемах с использованием Random в функциях шифрования!


 
OW ©   (2011-03-15 14:51) [20]


> это не спортивно.

зато дешево и надежно :)
каша в первом кб и расширение еще другое

помню как то, еще на BP одному писал под дос. От брата шифровался он, якобы, мне так сказал, во всяком случае. Типа файлик сломан, программа его  поправляла и показывала. Как то так, не суть, не в этом дело.
Да собственно ни в чем не дело :-), так просто, как совет, если автор не понял и вспомнить :)

Короче, перед запуском спрашивала пароль. Правильный - работает, нет- нет.
Через месяц он мне говорит - фиговая программа, типа, обойти можно.
Ну, думаю, научился наконец то, в файлах разбирается
Нет :)
Говорит он ее (*.exe) открыл в dasm каком то и сидел смотрел построчно для него полные кракозябры. Пока где то пароль не встретился (db xxxx)


 
Anatoly Podgoretsky ©   (2011-03-15 15:05) [21]

> OW  (15.03.2011 14:51:20)  [20]

Конечно хреновая, если так просто можно посмотреть пароль.


 
OW ©   (2011-03-15 15:32) [22]

не, она просто хреновая была,
на коленке, за 2 минуты писана, человеком пару месяцев программить начавшем


 
xmen   (2011-03-15 21:51) [23]

Шифр Виженера

http://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80_%D0%92%D0%B8%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%B0

http://zetblog.ru/programming/200812/%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F-%D1%88%D0%B8%D1%84%D1%80-%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%B0-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC/


//---------------------------------------------------------------------------

#include <vcl.h>

#include <windows.h>

#pragma hdrstop

#include <stdio.h>

#include <stdlib.h>

#include <iostream.h>

#include <fstream.h>

#include <string.h>

#include "codes.h"

void DecodeStr( char *, char *, int, char * );

void CodeStr( char *, char *, char * );

void CodeFile( char *, char *, char * );

void DecodeFile( char *, char *, char * );

int CheckKey( char * );

unsigned char GetChar( int, int );

double GenerateSignature( char * );

double SqrMN( int, int );

#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)

{

       return 1;

}

//---------------------------------------------------------------------------

double SqrMN( int m, int n )

{

  double res=m;

  for( int x=1; x<n; x++ )

     res = res * m;

  return res;

}

double GenerateSignature( char *password )

{

  double res=0;

  int l, x;

  unsigned char ch_left, ch_right;

  l = strlen( password );

  x = l / 2;

  x = x * 2;

  if ( x != l ) l -= 2;

  for( x=0; x<l; x += 2 )

  {

     ch_left = (unsigned char)password[x];

     ch_right = (unsigned char)password[x+1];

     res = res + SqrMN( ch_left, ch_right );

  }

  return res;

}

int CheckKey( char *key )

{

       int x, y, i, len=strlen( key );

       for( y=0; y<len; y++ )

               for( x=0; x<len; x++ )

                       if ( (key[y]==key[x])&&(y!=x) ) return 1;

       return 0;

}

void DecodeStr( char *out_str, char *in_str, int str_len, char *password )

{

  unsigned char pass_index, pass_len;

  int k, x;

  pass_len = strlen( password );

  for( pass_index=k=0; k<str_len; k++ )

  {

     for( x=0; x<=255; x++ )

        if ( GetChar( x,password[ pass_index ] ) == in_str[k] ) break;

     out_str[k] = GetChar( x,0 );

     pass_index++;

     if ( pass_index>=pass_len ) pass_index=0;

  }

  out_str[k] = "\0";

}

void DecodeFile( char *in_file, char *out_file, char *password )

{

       unsigned char c, ch, pch, pass_index=0, pass_len=strlen( password );

       int x;

       ifstream in( in_file, ios::binary );

       ofstream out( out_file, ios::binary );

       while( !in.eof() )

       {

               in.read( (unsigned char*)&ch, sizeof(char) );

               if ( in.eof() ) break;

               pch = password[pass_index];

               for( x=0; x<=255; x++ )

               {

                       c = GetChar( x,pch );

                       if ( c == ch ) break;

               }

               c = GetChar( x,0 );

               out.write( (unsigned char*)&c, sizeof(char) );

               pass_index++;

               if ( pass_index>=pass_len ) pass_index=0;

       }

       in.close();

       out.close();

}

void CodeStr( char *out_str, char *in_str, char *password )

{

  unsigned char pass_index, pass_len, str_len, x;

  pass_len = strlen( password );

  str_len = strlen( in_str );

  for( pass_index=x=0; x<str_len; x++ )

  {

     out_str[x] = GetChar( in_str[x], password[ pass_index ] );

     pass_index++;

     if ( pass_index >= pass_len ) pass_index = 0;

  }

  out_str[x] = "\0";

}

void CodeFile( char *in_file, char *out_file, char *password )

{

       unsigned char c, ch, pch, pass_index=0, pass_len=strlen( password );

       ifstream in( in_file, ios::binary );

       ofstream out( out_file, ios::binary );

       while( !in.eof() )

       {

               in.read( (unsigned char*)&ch, sizeof(char) );

               if ( in.eof() ) break;

               pch = password[pass_index];

               c = GetChar( ch, pch );

               out.write( (unsigned char*)&c, sizeof(char) );

               pass_index++;

               if ( pass_index>=pass_len ) pass_index=0;

       }

       in.close();

       out.close();

}

unsigned char GetChar( int yp, int xp )

{

  long  nRes = (((yp - xp) < 0) ? ((yp - xp) + 256) : (yp - xp));

  return (unsigned char)nRes;

}



 
Германн ©   (2011-03-16 02:07) [24]


> xmen   (15.03.11 21:51) [23]
>
> Шифр Виженера
>

Я тоже могу найти на всемирной помойке кучу реализаций различного шифрования всего, чего угодно. Но приводить на форуме ДМ пример на Си я не стану без должных оснований.


 
xmen   (2011-03-16 08:28) [25]


> Я тоже могу найти на всемирной помойке кучу реализаций различного
> шифрования всего, чего угодно. Но приводить на форуме ДМ
> пример на Си я не стану без должных оснований.


а я вот привел свой код и ссылку на материал как теоретический, так и реализацию на дельфе и что?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.072 c
2-1337283963
TStas
2012-05-17 23:46
2013.03.22
Правая клавиша в ричЭдит


15-1330783295
Savek
2012-03-03 18:01
2013.03.22
Воспроизведение видеофрагмента средствами медиаплеера


15-1346063472
>|<
2012-08-27 14:31
2013.03.22
Локализация утечки памяти


15-1332016205
Юрий
2012-03-18 00:30
2013.03.22
С днем рождения ! 18 марта 2012 воскресенье


15-1341814491
Очень Злой
2012-07-09 10:14
2013.03.22
Не могу скачать флешплейер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский