![](/img/trans.png)
[英]3DES encrypt result in PHP, JAVA and .NET produces different result from 3DES iOS
[英]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']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.