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

Вниз

"Шифровка по Виндусовски"   Найти похожие ветки 

 
lead-in   (2008-02-06 18:01) [0]

Пробовал поюзать API функции для шифрования файлов, использовал всего по минимому, в частности Microsoft Basic Cryptoprovider который, если верить описаниям, поддерживается всеми версиями Виндовса. Однако, попытка в WinXP "расшифровать" файл "закодированный" в Win2000 ничего не дала. Хотя если зашифр./расшифр. файлы в одной и той же системе - то всё нормально работает. Что я не так делаю? У них что отличаются эти самые криптопровайдеры для разных версий? Спрашивается, зачем вообще тогда такая "шифровка", если она жёстко привязана к версии ОС. Может у кого было что-то похожее или знает в чём проблема. Заранее благодарен...


 
slow!alfamoon!com   (2008-02-06 18:25) [1]

Ну милок, код то покажи, там дело непростое, предсказывать не берусь, но предположения есть


 
Riply ©   (2008-02-06 18:30) [2]

> [0] lead-in   (06.02.08 18:01)
Не уверена, но проблемма может быть в длинне ключа.
Не помню с какого времени дали возможность использовать
не 40-битный ключ.
Иными словами, хочешь что-бы читали все - используй короткий ключ.


 
Eraser ©   (2008-02-07 10:16) [3]


> lead-in   (06.02.08 18:01) 

[2] +
проблема скорее всего в разной длине ключа по-умолчанию, её надо явно задавать.


 
slow!alfamoon!com   (2008-02-07 15:29) [4]

Точно :) Я и забыл)


 
lead-in   (2008-02-08 10:34) [5]

собсно всё дело состоит в вызове неск. функций
=============
... сначала чтение из файла

 if not CryptAcquireContext(@hProv, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) then ...
 if not CryptCreateHash(hProv, CALG_SHA, 0, 0, @hHash) then ...
 if not CryptHashData(hHash, PByte(pswd), length(pswd), 0) then
 if not CryptDeriveKey(hProv, CALG_RC4, hHash, 0, @hKey) then ...
 dwDataLen := in_size;
 dwBufLen := dwDataLen;
 if not CryptEncrypt(hKey, 0, true, 0, nil, @dwBufLen, 0) then ...
 SetLength(map, dwBufLen);
 if not CryptEncrypt(hKey, 0, true, 0, @map[0], @dwDataLen, dwBufLen) then ...


... а дальше запись

про длину ключа понял, хотя куда её прописывать пока неясно


 
Riply ©   (2008-02-08 10:55) [6]

> [5] lead-in   (08.02.08 10:34)
> про длину ключа понял, хотя куда её прописывать пока неясно

Размер ключа задается при его генерации.
Только, если мне не изменяет память, Microsoft Basic Cryptoprovider,
например, от Win98 "проглотит" и 128-битный и 1024-битный ключ, но релальный размер
будет 40 бит - остальное забивается нулями.
Про Win2000 ничего не могу сказать, но возможна та же катавасия :)

P.S.
Мне больше нравился Strong Cryptoprovider, Basic - устаревший.
Да и по умолчанию, вроде стоит Strong, как для пользователя, так и для системы.
Давно все это было, могу ошибаться.


 
lead-in   (2008-02-08 11:26) [7]


> Размер ключа задается при его генерации.


то есть при вызове CryptDeriveKey? там похожих параметров нет, разве что сам используемый алгоритм, наверно  CryptSetKeyParam надо разобрать...

thanks for help to all)))



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

Форум: "WinAPI";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.052 c
2-1226475983
Uno-84
2008-11-12 10:46
2008.12.21
Вывод на печать текст из PaintBox


2-1226300937
cyborg
2008-11-10 10:08
2008.12.21
Что за ошибка "Отказано в доступе"?


15-1224584567
Pavel
2008-10-21 14:22
2008.12.21
Нужна помощь (платная)


15-1224058462
matt
2008-10-15 12:14
2008.12.21
Рабочий день


9-1176119436
ElectriC
2007-04-09 15:50
2008.12.21
CD3DFont текст





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский