progr
Новичок
Если не в ту ветку запостил, прошу прощения. Не нашел более подходящей
Вопрос в следующем. Пишу алгоритм blowfish шифрования для общения между андроид приложением и сервером с ПХП.
Ключевая фраза по кторой происходит криптование одинаковая на обеих платформах.
Но в итоге после криптования на ПХП в JAVA расшифровать не удается
Для теста была установлена одинаковая строка которая шифруется и в ПХП и в JAVA c одинаковым ключем но на выходе получаю разные данные
Код на пхп:
Результат:
Код на яве:
Результат:
Видно что итоговый результат частично похож
подозреваю что связано с какими то скрытыми символами
Возможно с этим
// PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
но не пойму как возможно это устранить
Вопрос в следующем. Пишу алгоритм blowfish шифрования для общения между андроид приложением и сервером с ПХП.
Ключевая фраза по кторой происходит криптование одинаковая на обеих платформах.
Но в итоге после криптования на ПХП в JAVA расшифровать не удается
Для теста была установлена одинаковая строка которая шифруется и в ПХП и в JAVA c одинаковым ключем но на выходе получаю разные данные
Код на пхп:
PHP:
echo "<pre>";
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
$iv = '87654321';
$key256 = '1234567890123456ABCDEFGHIJKLMNOP';
$cleartext = 'Hello World!';
printf("clearText: %s\n\n",$cleartext);
if (mcrypt_generic_init($cipher, $key256, $iv) != -1)
{
$cipherText = mcrypt_generic($cipher,$cleartext );
mcrypt_generic_deinit($cipher);
printf("256-bit blowfish encrypted:\n%s\n\n",base64_encode($cipherText));
}
Код:
clearText: Hello World!
256-bit blowfish encrypted:
GzPEICvhvK7TZyhPbkRCzw==
Код на яве:
Код:
package com.example.xcrypttest;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import android.app.Activity;
import android.os.Bundle;
import android.util.Base64;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView viText1, viText2;
static final String IV_MY = "87654321";
static final String strkey = "1234567890123456ABCDEFGHIJKLMNOP";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viText1 = (TextView) findViewById(R.id.ShowInfo1);
String res1 = encryptBlowfish("Hello World!",strkey);
viText1.setText(res1);
}
public static String encryptBlowfish(String to_encrypt, String strkey) {
try {
SecretKeySpec key = new SecretKeySpec(strkey.getBytes(), "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish/CBC/PKCS5Padding");
byte[] ivBytes = IV_MY.getBytes();
IvParameterSpec iv = new IvParameterSpec(ivBytes);
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] en = to_encrypt.getBytes();
byte[] enbt = cipher.doFinal(en);
String result1 = Base64.encodeToString(enbt, Base64.DEFAULT);
return result1;//new String();
} catch (Exception e) { return null; }
}
}
Код:
GzPEICvhvK5T+z8xf/d6MA==
подозреваю что связано с какими то скрытыми символами
Возможно с этим
// PHP pads with NULL bytes if $cleartext is not a multiple of the block size..
но не пойму как возможно это устранить