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

时间:2012-11-27 09:31:31

标签: c# php asp.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页面的php o显示中再次解密这个bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==。请任何人帮我这样做

3 个答案:

答案 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方面你必须反过来。