Я использую стороннюю платформу для создания целевой страницы, это бизнес-требование, чтобы я использовал эту конкретную платформу.
На их странице я могу зашифровать данные и отправить их на свой сервер через параметр запроса при вызове ресурса на моем сайте.Это делается с помощью симметричного шифрования AES.
Мне нужно указать пароль, соль (значение должно быть шестнадцатеричным) и вектор инициализации (но не более 16 символов).
Их серверная часть - платформа .NET.Я знаю это, потому что, если я укажу IV больше, чем он ожидает, базовое исключение будет:
System.Security.Cryptography.CryptographicException: Specified initialization vector (IV) does not match the block size for this algorithm.
Source: mscorlib
Так, например, на их конце я указываю:
EncryptSymmetric("Hello World","AES","P4ssw0rD","00010203040506070809", "000102030405060708090A0B0C0D0E0F")
Где входные данные: обычный текст, алгоритм, пароль, соль и IV соответственно.
Я получаю значение: eg/t9NIMnxmh412jTGCCeQ==
Если я попытаюсь расшифровать это на моем конце, используя JCE или провайдера BouncyCastle, который я получаю (тот же алгоритм, пароль, соль и IV, с1000 итераций): 2rrRdHwpKGRenw8HKG1dsA==
, что совершенно другое.
Я посмотрел много разных примеров Java в Интернете о том, как расшифровать AES.Одной из таких демонстраций является следующее: http://blogs.msdn.com/b/dotnetinterop/archive/2005/01/24/java-and-net-aes-crypto-interop.aspx
Как я могу расшифровать симметричное шифрование AES, использующее парольную фразу, соль и IV, сгенерированное платформой .NET на платформе Java?
Мне не обязательно иметь возможность дешифровать содержимое строки шифрования, если я могу сгенерировать ту же сигнатуру на стороне Java и сравнить (если выясняется, что на самом деле генерируется здесь хеш).
Я использую JDK 1.5 в производстве, поэтому мне нужно использовать 1.5 для этого.
В качестве примечания, во многих примерах в Java необходимо указать количество повторенийна стороне Java, но не на стороне .NET.Есть ли стандартное количество итераций, которое мне нужно указать на стороне java, которое соответствует выводу .NET по умолчанию.