Главная страница
    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.041 c
2-1226422654
Res
2008-11-11 19:57
2008.12.21
TBitmap


15-1224833606
matt
2008-10-24 11:33
2008.12.21
Ищу работу


2-1226648255
asddsa
2008-11-14 10:37
2008.12.21
Потоки в классах


15-1224835973
Рамиль
2008-10-24 12:12
2008.12.21
ПО для прокладки маршрутов


15-1224067825
Аскар
2008-10-15 14:50
2008.12.21
Какие есть разновидности у C++?





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