Как использовать " cryptography API: next generation (CNG)"
Я кодирую в PowerBuilder, и на самом деле он работает. Мой вопрос касается соли, которая называется вектором инициализации CNG.
Я беру пароль, который может быть любой длины, и генерирую хэш SHA-256. Я использую хэш в качестве секретного ключа и вектора инициализации. Затем я вызываю BCryptGenerateSymmetricKey, передавая 256-битный секретный ключ, а затем вызываю BCryptEncrypt, передавая то же самое, что и вектор инициализации.
Хороших примеров, которые я могу найти, не так уж много. Моя главная проблема заключается в том, что если приложение PowerBuilder должно было обмениваться зашифрованными данными с приложением, разработанным на другом языке, оно не будет работать, если ключ и соль не совпадают.
Любые советы о том, как шифрование выполняется на других языках, будут оценены по достоинству.
Что я уже пробовал:
См. Описание проблемы, я передаю хэшированный пароль как секретный ключ и IV.
Richard MacCutchan
Вы правы, ключ и соль должны быть одинаковыми.