2011-11-19 130 views
0

當我從客戶端加密數據並使用Post方法發送到Web服務器時,出現問題(服務器端)。帶3DES加密的PHP空格加密

我用這個方法從C#客戶

public string Encrypt3DES(string strString) 
    { 
     DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); 

     DES.Key = Encoding.GetBytes(this.Key); 
     DES.Mode = CipherMode.ECB; 
     DES.Padding = PaddingMode.Zeros; 

     ICryptoTransform DESEncrypt = DES.CreateEncryptor(); 

     byte[] Buffer = encoding.GetBytes(strString); 

     return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)); 
    } 

到加密當我送ecrypted字符串到PHP是否有在該字符串+,PHP有一個空格閱讀。如果沒有任何'+'我沒有任何問題。

例如,這是一個加密的字符串4aY + na42iaPg + aep ==在C#中,當我在php中讀取它的 4aY a42iaPg aep ==所以如果我解密,如果不匹配正確的單詞。

我使用這個腳本開始閱讀方法後

if (isset($_POST['doConvalid'])){  
if ($_POST['doConvalid']=='Convalid') 
{ 
    foreach($_POST as $keys => $values) { 
    $data[$keys] =($values); // post variables are filtered 
} 

$cheking=$data['check']; 
echo("Show checking = $checking"); //Here i read string with blank space instead + 

有沒有辦法解決呢?

回答

0

您可以用不同的字符(base64不使用的東西)替換'+'來發送。然後將該字符替換回'+'進行解碼。