спасибо, приятно )
подробнеe о том что это:
это библиотека для вызова нативных функций из java, java сама по себе кроссплатформенна, чтобы вызвать функции windows создаются dll b некие jar чтобы работать с dll - все это JNI.
эти библиотека вызывает CryptProtectData и CryptUnprotectData из crypt32.dll, которая шифрует ключ применительно к машине(это к теме простой защиты к программе -
https://forum.shelek.ru/index.php/topic,13396.0.html)
в java зашифровать ключ где неким алиасом была бы машина или ОС нельзя, на сколько я знаю, из-за кроссплатформенности, не смотря на навороченные способы шифрования которые появились в JDK6
в чем проблема:
dll Работает под W2K и не работает под XP, я предположил что из-за того что библиотеки crypt32.dll, которые используются напрямую имеют разный размер в 2к и XP, а dll была скомпилоирована наверное под старую crypt32.dll(W2K)
что нужно сделать:
нужно скомпилировать dll ) чтобы попроверить мои догадки и заставить работать под XP.
как это сделать? - если б я знал я наверное сам бы это сделал.
там нужно подключить JNI.h(и то что подключается в ней), возможно такая библиотека есть в ваших IDE и SDK для С++ и каких-то платформ, но маловероятно, она точно есть в JDK
я пробовал создать проект в VC++6.0, прописал пути к .h файлам, которые есть в JDK
после подключения библиотек - касающиеся их ошибки пропали
компилятор не знал тип "DATA_BLOB", я такой тип тоже не знаю )), на С++ работаю, но под очень редкую платформму, решил спросить на форуме предположив что кому-то будет "просто" решить задачу, кто рабоатет с прогарммированием под win
задача решена. как:
я начал искать другие варианты(давно начал), совсем недавно - 11 ноября, появился проект -
http://sourceforge.net/projects/jdpapi/т.е. тот же вызов MS data protection API из Java.
в текущей версии 1.0 исходников нет, документации нет, но я вроде создал проект, однако при запуске просто вис при попытке что-то закодировать.
этой ночью я связался с разработчиком, оказалось что в его коде нет подключения dll и надо самому руками вызывать System.loadLibrary("путь к dll");
так же должен отметить, что там нет base64 кодирования в отличие от MSDPAPIJava и это нужно делать также самому, иначе при записи ключа в файл получите проблемы.
выражаю благодарность всем за участие, если кто-то таки скомпилирует - я обязательно проверю как работает и дам знать.