我正在对c#中的一个字符串进行加密,并将其发送到类似这样的php页面。
sfplr.Attributes.Add("href", "http://sml.com.pk/a/sfpl/reports.php?id=" + Convert.ToBase64String(Encoding.Unicode.GetBytes(emailid)));
从这个代码生成的url就像这个
http://sml.com.pk/a/sfpl/reports.php?id=bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==
现在我想在php中再次解密这个bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==
,以便在php页面中显示。请任何人帮我做这个
尝试使用base64_decode
函数
参考http://php.net/manual/en/function.base64-decode.php
在您的情况下,它将是:
<?php
echo base64_decode($_GET['id']);
?>
$email = base64_decode("bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==");
echo $email; //****** You will get email here... */
请参阅"是";convert.tobase64string";Net等于";base64_encode";在PHP中?
使用base64_decode
函数将返回最初传递给convert.toBase64String
的字节。
之后,你将不得不以以下方式检索它们:
<?php $emailBytes = base64_decode($_GET['id']); ?>
如果它已经被正确序列化,它将返回您在C#中使用Convert.toBase64String创建的数组,请参阅Encoding.getBytes.
意思是,如果数组按您预期的方式传递(我对此表示怀疑)
$msg = "";
foreach ($emailBytes as $character) {
$msg .= (char) $character;
}
我怀疑你甚至不需要Encoding.getBytes,你可以通过一个字符串作为参数。
在C#中使用
Convert.ToBase64String(emailid);
然后,您在php中所要做的就是按照我第一次提到的方式进行检索,这将为您提供原始传递的String。
此外,正如多次指出的那样,这是您正在执行的加密,它只是确保它可以以不发生冲突的方式在URL中传递。
如果你真的想加密,在C#端使用一个库,对消息进行编码,base64编码。然后在PHP端,你必须做相反的事情。