我正在加密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页面的php o显示中再次解密这个bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==
。请任何人帮我这样做
答案 0 :(得分:2)
尝试使用base64_decode
功能
参考http://php.net/manual/en/function.base64-decode.php
在您的情况下,它将是:
<?php
echo base64_decode($_GET['id']);
?>
答案 1 :(得分:2)
$email = base64_decode("bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==");
echo $email; //****** You will get email here... */
请参阅Is "convert.tobase64string" in .Net equal to "base64_encode" in PHP?
答案 2 :(得分:0)
使用base64_decode
函数将返回您最初传递到convert.toBase64String
的字节。
之后,您将不得不以下列方式检索它们:
<?php $emailBytes = base64_decode($_GET['id']); ?>
如果已正确序列化,那么将使用Convert.toBase64String返回您在C#中创建的数组,请参阅Encoding.getBytes。
意思是,如果数组按预期传递(我怀疑)
$msg = "";
foreach ($emailBytes as $character) {
$msg .= (char) $character;
}
我怀疑你甚至需要Encoding.getBytes,你可以将一个字符串作为参数。
在C#中使用
Convert.ToBase64String(emailid);
然后你在php中所做的就是以我第一次提到的方式进行检索,这将为你提供原始传递的String。
另外,正如多次指出的那样,这是您正在执行的加密,它只是确保它可以以不会发生冲突的方式在URL中传递。
如果你想加密,请在C#端使用库,对消息进行编码,base64对其进行编码。然后在PHP方面你必须反过来。