2013-02-27 27 views
1

我有一个应用程序,我需要将用户名转换为加密格式,然后在php.My中加密解密。但在PHP端解密的字符串总是包含两到三个额外的字符在不可读的格式。我只是不知道它从哪里采取这些额外的字符?这与填充有关吗? 我发布android代码和php代码。Php以不可读的格式返回解密的字符串

的Android端代码

public String encryptStringWithAES(String Message) throws Exception { 

    String key = "123456789abcdefg"; 

    String iv = "123456789"; 

    String padding = "ZeroBytePadding"; 


    SecretKeySpec spec = new SecretKeySpec(key.getBytes("UTF8"), "AES"); 

    Cipher cipher = Cipher.getInstance("AES/CBC/" + padding); 



    IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); 


    cipher.init(Cipher.ENCRYPT_MODE, spec, ivspec); 

    byte[] array = cipher.doFinal(Message.getBytes()); 

    System.out.println("encrypted ARRAY LENGHT:" + array.length); 

    String encoded_string = android.util.Base64.encodeToString(array, 0, 
    array.length, Base64.NO_PADDING); 

    System.out.println("Requested encoded string: " + encoded_string); 
    return encoded_string; 

} 

PHP端代码:

$key_for_AES='123456789abcdefg'; 

$iv='123456789'; 



$message=$_POST['msg']; 

$decoded_string=base64_decode($message); 

$decrypted_string=mcrypt_decrypt('rijndael-128',$key_for_AES, $decoded_string,'cbc',$iv); 

回答

0

我想你可能有字符编码问题。 Android代码使用UTF-8进行字符串编码。因为这确保从android到php的整个数据流都使用这种编码。

我对你的具体建议是检查php脚本文件的编码。您还必须确定UTF-8编码是否带有BOM或没有它。

编辑:

当我说 “编码” 我想 “character encoding”。在Android的负责字符编码代码大概是这样的:

key.getBytes("UTF8") 

我不知道你正在使用的编辑器,但你应该检查什么字符编码设置为您正在使用的PHP脚本文件。确保它是UTF-8。并用BOM测试并且不用它,因为我不确定什么是ororid正在使用的。

+0

thax for you replay。我第一次尝试编码和解码的东西。即在android中使用base64编码字符串,并在php中解码。它运作良好,但是当我尝试使用常量Base64.SAFE_URL或任何其他常量时,我​​会以不可读的格式获取更少或更多的字符。 – user1393609 2013-02-27 10:20:12

+0

这是我的输出: – user1393609 2013-02-27 10:28:21

+0

原始字符串=测试是强制性加密字符串= m + 0nVREKQweWMeWhR0RnevVJmSDi解密字符串=测试是强制性的 – user1393609 2013-02-27 10:30:13

0

我最近使用C#和PHP有类似的编程经验。

它可能是解密对象包含空字符。你可以尝试剥离它们。我还从字符串的末尾去掉回车符:

$decrypted_string = str_replace("\0", "", $Decrypted); 
$decrypted_string = str_replace("\r", "", $Decrypted); 
$decrypted_string = str_replace("\n", "", $Decrypted); 
+0

好的。 thax回复。我会试试这个。 – user1393609 2013-02-27 10:31:21

+0

仍然无法使用!现在做什么? – user1393609 2013-02-27 10:37:20