Krypterad Java<->PHP Socket (BadPaddingException)
Hej!
Jag försöker göra en socket anslutning mellan en websida i PHP och en Java applikation.
Anslutningen måste vara krypterad på något sätt.
Jag har försökt i två dagar nu men jag lyckas inte få till det. valigt text har jag inte haft någora probem med, det är själva krypteringen och dekrypteringen som inte fungerar.
Vad jag förstått så är Rijndael och AES samma krypterings algorthm.
Felmeddelandet jag får i Javaapplikationen när jag ska dekryptera datan är:
javax.crypto.BadPaddingException: Given final block not properly padded
PHP(socket client)
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
$key128 = '1234567890123456';
$iv = '1234567890123456';
$cleartext = 'Denna text ska krypteras och dekrypteras';
echo "Len: ".strlen($cleartext);
if (mcrypt_generic_init($cipher, $key128, $iv) != -1)
{
$cipherText = mcrypt_generic($cipher,$cleartext );
mcrypt_generic_deinit($cipher);
printf("<br /><br />128-bit encrypted result:\n%s\n\n",bin2hex($cipherText));
}
echo "Len: ".strlen($cipherText);
$host="*IP*" ;
$port=4444;
$timeout=10;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if (!is_resource($sk)) {
exit("connection fail: ".$errnum." ".$errstr) ;
} else {
fputs($sk, $cipherText) ;
$dati="" ;
while (!feof($sk)) {
$dati.= fgets ($sk, 1024);
}
}
fclose($sk) ;
echo($dati) ;
Java(Socket server)
//String key1 = "1234567812345678";
String key1 = "1234567890123456";
byte[] key2 = key1.getBytes();
SecretKeySpec secret = new SecretKeySpec(key2, "AES");
try
{
in = new DataInputStream(s.getInputStream());
out = new DataOutputStream(s.getOutputStream());
Cipher inCipher = Cipher.getInstance("AES");
inCipher.init(Cipher.DECRYPT_MODE, secret);
byte b2;
String str, str2;
byte[] b = new byte[32];
int count;
while((count = in.read(b)) >= 0 )
{
System.out.println("count: " + count);
str = new String(b);
System.out.println("string: " + str);
byte[] decrypted = inCipher.doFinal(b);
str2 = new String(decrypted);
System.out.println("decrypted: " + str2);
str = new String(b);
System.out.println("string: " + str);
}
}
catch (Exception e)
{
System.out.println(e);
}
Bloggar om Hemautomation på HomeAutomateIt.com