簡體   English   中英

PHP空格與3DES加密

[英]PHP blank space with 3DES Encrypt

我從客戶端加密數據並使用Post Method發送到Web服務器時遇到問題(服務器端)。

我使用此方法從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));
    }

當我將加密的字符串發送給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 +

有辦法解決嗎?

您可以將“ +”替換為其他字符(base64未使用的字符)進行發送。 然后將該字符替換回“ +”進行解碼。

是的,base64解碼+空格使用此:

echo str_replace(" ","+",$_POST['string']);

http://en.wikipedia.org/wiki/Base64#URL_applications

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM