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..
но не пойму как возможно это устранить
	            