Схема
Add(MainForm,218580,77,168)
{
Width=377
Height=235
Caption="Crypt-DeCrypt image"
}
Add(Button,9628864,357,63)
{
Left=10
Top=140
Width=40
Caption="Open"
link(onClick,5452223:doExecute,[])
}
Add(Image,15816066,525,63)
{
Left=10
Top=10
Width=160
Height=120
Point(ImageWidth)
Point(ImageHeight)
}
Add(Image,12515042,714,539)
{
Left=185
Top=10
Width=160
Height=120
}
Add(Button,1194282,77,231)
{
Left=55
Top=140
Width=95
Caption="Encrypt and Save"
link(onClick,12702545:doExecute,[])
}
Add(Edit,75778,441,287)
{
Left=10
Top=165
Width=85
Text="123456"
DataType=2
}
Add(ODialog,5452223,406,63)
{
Filter="Изображение BMP (*.bmp)|*.bmp|Изображение JPEG (*.jpg)|*.jpg|Все файлы (*.*)|*.*|"
Title="Выбор изображения"
FileName=""
link(onExecute,141407:doLoad,[])
}
Add(PictureStream,141407,462,63)
{
link(onLoad,15816066:doLoad,[])
}
Add(Button,6051066,77,525)
{
Left=210
Top=140
Width=105
Caption="Open Encrypted"
link(onClick,14569606:doExecute,[])
}
Add(Edit,6164446,343,469)
{
Left=225
Top=165
Width=85
Text="123456"
DataType=2
}
Add(SDialog,12702545,133,231)
{
Filter="Зашифрованное изображение BMP (*.bmp.enc)|*.bmp.enc"
Title="Сохранение"
FileName=""
link(onExecute,12925532:doValue,[])
}
Add(DoData,10449778,371,154)
{
link(onEventData,16398183:doPosition,[])
}
Add(ODialog,14569606,126,525)
{
Filter="Зашифрованное изображение BMP (*.bmp.enc)|*.bmp.enc"
Title="Открытие изображения"
FileName=""
link(onExecute,7024419:doOpen,[])
}
Add(BitmapStream,2098176,441,224)
{
link(Stream,27327:Var2,[])
link(Bitmap,15816066:ImageBitmap,[(454,208)(531,208)])
}
Add(MemoryStream,16398183,441,140)
{
Point(doPosition)
}
Add(Hub,1928830,231,231)
{
OutCount=3
link(onEvent1,11591762:doEvent1,[])
link(onEvent2,2036368:doConvert,[(256,244)(256,349)])
link(onEvent3,16398183:doClear,[(273,251)(273,153)])
}
Add(Hub,11591762,315,231)
{
link(onEvent1,2098176:doWrite,[])
link(onEvent2,10449778:doData,[(361,244)(361,160)])
}
Add(FileStream,11939445,623,329)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,12925532:Value,[(629,271)(188,271)])
}
Add(GetDataEx,27327,441,189)
{
link(Data,16398183:Stream,[])
}
Add(Message,174773,623,378)
{
Message="Зашифрованый файл сохранен!"
Caption="Информация"
Icon=4
}
Add(Message,1437305,770,385)
{
Caption="Ошибка шифрования/дешифрования"
Icon=1
}
Add(DoData,12652475,525,483)
{
link(onEventData,16768355:doPosition,[])
}
Add(BitmapStream,3993290,595,539)
{
link(onRead,10861664:doEvent1,[])
link(Stream,16768355:Stream,[])
}
Add(MemoryStream,16768355,595,469)
{
Point(doPosition)
}
Add(Hub,9963595,455,525)
{
OutCount=4
link(onEvent1,16768355:doCopy,[(480,531)(480,475)])
link(onEvent2,12652475:doData,[(494,538)(494,489)])
link(onEvent3,3993290:doRead,[])
link(onEvent4,16768355:doClear,[(564,552)(564,482)])
}
Add(FileStream,7024419,182,525)
{
link(onLoad,16393140:doEvent1,[])
}
Add(Hub,16393140,238,525)
{
link(onEvent1,4936526:doConvert,[])
link(onEvent2,7024419:doClose,[(263,538)(263,566)(172,566)(172,538)])
}
Add(Message,6008702,672,546)
{
Message="Картинка загружена."
Caption="Информация"
Icon=4
}
Add(Hub,10861664,644,539)
{
link(onEvent1,12515042:doLoad,[])
link(onEvent2,6008702:doMessage,[])
}
Add(DeCrypt,13176887,336,525)
{
Mode=7
HashMode=0
Point(onError)
link(onDeCrypt,620174:doConvert,[])
link(Key,6164446:Text,[])
link(onError,7933554:doWork2,[(382,538)(382,426)])
}
Add(EnCrypt,3985395,434,343)
{
Mode=7
HashMode=0
Point(onError)
link(onEnCrypt,5358436:doConvert,[])
link(Key,75778:Text,[])
link(onError,7933554:doWork1,[(508,356)])
}
Add(StreamConvertor,2036368,371,343)
{
Mode=6
Point(Data)
link(onResult,3985395:doEnCrypt,[])
link(Data,27327:Var1,[(377,194)])
}
Add(StreamConvertor,5358436,518,343)
{
Mode=7
Point(Data)
link(onResult,5934038:doEvent1,[])
}
Add(Memory,12925532,182,231)
{
link(onData,1928830:doEvent1,[])
}
Add(Hub,5934038,574,343)
{
link(onEvent1,11939445:doCopyFromStream,[])
link(onEvent2,174773:doMessage,[(613,356)(613,384)])
}
Add(StreamConvertor,4936526,280,525)
{
Mode=6
Point(Data)
link(onResult,13176887:doDeCrypt,[])
}
Add(StreamConvertor,620174,399,525)
{
Mode=7
Point(Data)
link(onResult,9963595:doEvent1,[])
}
Add(StrList,14371271,714,378)
{
Strings=#8:NO_ERROR|23:ERROR_INVALID_PARAMETER|19:ERROR_INCORRECT_KEY|21:ERROR_ACQUIRE_CONTEXT|20:ERROR_GENERATION_KEY|24:ERROR_GENERATION_KEYPAIR|18:ERROR_GET_USER_KEY|16:ERROR_DERIVE_KEY|13:ERROR_ENCRYPT|13:ERROR_DECRYPT|17:ERROR_CREATE_HASH|15:ERROR_HASH_DATA|20:ERROR_GET_HASH_PARAM|17:ERROR_SIGNED_HASH|20:ERROR_EXPORT_KEYPAIR|22:ERROR_EXPORT_PUBLICKEY|23:ERROR_EXPORT_SESSIONKEY|24:ERROR_EXPORT_EXCHANGEKEY|20:ERROR_IMPORT_KEYPAIR|22:ERROR_IMPORT_PUBLICKEY|23:ERROR_IMPORT_SESSIONKEY|24:ERROR_IMPORT_EXCHANGEKEY|26:ERROR_WRONG_CONTAINER_NAME|22:ERROR_CREATE_CONTAINER|22:ERROR_DELETE_CONTAINER|26:ERROR_CONTAINER_NOT_EXISTS|30:ERROR_CONTAINER_ALREADY_EXISTS|19:ERROR_NO_CONTAINERS|
Point(doGetString)
Point(onGetString)
link(onGetString,1437305:doMessage,[])
}
Add(HubEx,7933554,504,420)
{
link(onEvent,14371271:doGetString,[])
}
Используя в качестве загрузчика картинок Img_GDIFileProcessor можно снять ограничение на чтение картинок форматов, отличных от bmp