blockquote>
- mvn install
Вы можете написать код ниже в командной строке или если вы используете eclipse builtin maven, щелкните правой кнопкой мыши по проекту -> Run As -> run configurations ... -> в левой панели щелкните правой кнопкой мыши на Maven Build -> new configuration -> напишите код в Goals & amp; в базовом каталоге: $ {project_loc: NameOfYourProject} -> Run
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
Где каждый относится к:
& lt; путь к файлу>: путь к файлу для загрузки, например, -> c: \ kaptcha-2.3.jar
& lt; group-id>: группа, в которой файл должен быть зарегистрирован, например, -> com.google.code
& lt; artifact-id>: имя артефакта для файла, например, -> kaptcha
& lt; version>: версия файла e.g -> 2.3
& lt; упаковка>: упаковка файла, например. -> jar
2. После установки просто объявляет jar в pom.xml.
blockquote><dependency> <groupId>com.google.code</groupId> <artifactId>kaptcha</artifactId> <version>2.3</version> </dependency>
Как мы можем видеть, вы пытаетесь сравнить тот, который явно закодирован с использованием hex. Другой - с базой64.
в php
php manual
Описание:
string mcrypt_encrypt (строка $ cipher, string $ key, string $ data, string $ mode [, string $ iv])
Шифрует данные и возвращает их.
......
data
Данные, которые будут зашифрованы с помощью данного шифра и режима. Если размер данных не является n * blockize, данные будут дополняться «\ 0».
Возвращенный криптотекст может быть больше, чем размер данных, данных данными.
blockquote>Режим ECB игнорирует IV, поэтому вводить пример в пример, используя MCRYPT_MODE_ECB и IV (пример в руководстве показывает то же самое). Кроме того, важно знать, что ECB полезен для случайных данных, но структурированные данные должны использовать более сильный режим, например MCRYPT_MODE_CBC
php Code
function encrypt($input) { // $iv = mcrypt_create_iv(32); $mcr = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, "KRPTTT101103", $input, MCRYPT_MODE_ECB); $hex2 = bin2hex($mcr); // Convert binary data into hexadecimal representation return strtoupper($hex2); // base64_encode($mcr); } $encryptedhextext = encrypt("sifrelenecek"); if ($encryptedhextext == "FBE4A4405D6C1B54503D9B213E41AE56" ) { echo "Encrypted Hex text in Delphi and php are equal<br />"; echo $encryptedhextext." == FBE4A4405D6C1B54503D9B213E41AE56"; }
Выход
Шифрованный текст Hex в Delphi и php равны FBE4A4405D6C1B54503D9B213E41AE56 == FBE4A4405D6C1B54503D9B213E41AE56
Вы смешиваете две разные формы заполнения. Это то, что вызывает несоответствие. Это не просто различие Base64 / hex.
Ваш открытый текст равен 12 байтам: «sifrelenecek», закодированный как:
[115, 105, 102, 114, 101, 108, 101, 110, 101, 99, 101, 107]
Если вы накладываете открытый текст на ZEROES, как очевидно Delphi и, как указано в mcrypt_encrypt, вы шифруете:
[115, 105, 102, 114, 101, 108, 101, 110, 101, 99, 101, 107, 0, 0, 0, 0]
Полученный в результате шифрованный текст ++ SkQF1sG1RQPZshPkGuVg == в Base64, который при декодировании на простые байты и перекодировке в шестнадцатеричном формате, становится «FBE4A4405D6C1B54503D9B213E41AE56» - то, что возвращается онлайн-инструменту.
Но если вы набиваете открытый текст с помощью дополнения PKCS # 7, как и в вашем PHP-коде выше:
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
, тогда этот открытый текст заполняется ЧЕТЫРЕ, и вы шифруете:
[115, 105, 102, 114, 101, 108, 101, 110, 101, 99, 101, 107, 4, 4, 4, 4]
Получившийся зашифрованный текст + wL2yf + 72thixicjw0duQA == - только то, что вы показываете выше в своем вопросе.
Любая панель с обеих сторон с ZEROES или панель с обеих сторон с PKCS # 7, и ваши результаты должны совпадать.