Форум: "Основная";
Текущий архив: 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.074 c