Delphi, php, mcrypt(blowfish)

torsar

Новичок
Delphi, php, mcrypt(blowfish)

Есть програмулька на делфях,
которая шифрует строку по алгоритму blowfish.
(и для теста - разшифровывает - правильно все)
Софтина передает зашифрованную строку
php - скрипту на серваке, который юзает
библиотеку mcrypt.
скрипт должен разшифровать строку.
белеиберда получается.
пробовал вызывать скрипт напрямую из браузера
http://dotjob.loc:8080/job/mcrypt/crypt.php?key=key&secretstring=cxkFzJAZL8M=


билеберда

вот скрипт :

<?php
$skey=$_GET['key'];
$SecretString=base64_decode($_GET['secretstring']);
//$SecretString='hi';
echo $skey.' '.$SecretString.'<br>';

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_ECB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_ECB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_ECB);
echo '<br>'.'<br>'.'<br>'.$plaintext;

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_CBC);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_CBC,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_CBC,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_CBC);
echo '<br>'.'<br>'.'<br>'.$plaintext;

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_CFB);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_CFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_CFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_CFB);
echo '<br>'.'<br>'.'<br>'.$plaintext;

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_OFB);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_OFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_OFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_OFB);
echo '<br>'.'<br>'.'<br>'.$plaintext;

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_NOFB);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_NOFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_NOFB,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_NOFB);
echo '<br>'.'<br>'.'<br>'.$plaintext;

$iv_size=mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_STREAM);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,@skey,$ciphertext,
MCRYPT_MODE_STREAM,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE__STREAM,$iv);
echo '<br>'.$plaintext;
$plaintext=mcrypt_decrypt(MCRYPT_BLOWFISH,$skey,$SecretString,
MCRYPT_MODE_STREAM);
echo '<br>'.'<br>'.'<br>'.$plaintext;



$cipher=mcrypt_module_open('blowfish','','ecb','');
$iv_size=mcrypt_enc_get_iv_size(@cipher);
$iv=substr($SecretString,0,$iv_size);
$ciphertext=substr($SecretString,$iv_size);
mcrypt_generic_init($cipher,$skey,$iv);
$plaintext=mdecrypt_generic($cipher,$ciphertext);
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
echo '<br>'.'<br>'.'<br>'.$plaintext;
?>
 

dimagolov

Новичок
1. у тебя прямо так и написано: @skey, @cipher ???
2. какого объема зашифрованные данные?
3. как кодируешь в Base64? проверял идентичность раскрытого PHP с тем, что зашифровывал им?
 

torsar

Новичок
1)есть зашифрованная строка алгоритмом blowfish
(куча символов в том числе нечитаемых).
Я из делфей делаю base64_encode,
получается строка примерно отакая :

71BqxdoeTyiKOUu05aI/1cjfkZx5e0A=

(может содержать символы '+' и '=')
передаю эту строку как :
http://server.loc/script.php?key=71BqxdoeTyiKOUu05aI/1cjfkZx5e0A=
те скрипт эту строку может воспринимать как несколько
ключей/параметров
как ее закодировать, чтоб скрипт воспринимал эту строку
как одно целое?
 

torsar

Новичок
>>а вообще в каментах к Base64 решение твоей проблемы есть

В доках по пхп я комментов не нашел
можно попдробнеее
 

dimagolov

Новичок
torsar, в base64 3 символа, которые не допустимы в URL (веренее служебные в нем). Вот их можно руками поменять, набор то символов только 65 шт. Есть в каментах такой пример.
 
Сверху