Главная страница
    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.046 c
1-1204908815
Воронтсов
2008-03-07 19:53
2008.12.21
работа с TOpenDialog


15-1224694104
TStas
2008-10-22 20:48
2008.12.21
Чем сделать из Audio CD MP3?


1-1204827510
wild
2008-03-06 21:18
2008.12.21
Гибрид StringGrid и ComboBox


2-1226567217
Tugodum
2008-11-13 12:06
2008.12.21
невидимая форма


15-1223469271
Anton
2008-10-08 16:34
2008.12.21
Вопрос новичка. Тема про SQL.





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