如何在php中解密.net加密的字符串



我正在对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端,你必须做相反的事情。

最新更新