0

我在 c# 中加密一个字符串并将其发送到这样的 php 页面。

sfplr.Attributes.Add("href", "http://sml.com.pk/a/sfpl/reports.php?id=" + Convert.ToBase64String(Encoding.Unicode.GetBytes(emailid)));

并且从此代码生成的网址是这样的

http://sml.com.pk/a/sfpl/reports.php?id=bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==

现在我想在 php 中再次解密这个bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==o 显示在 php 页面中。请任何人帮我这样做

4

3 回答 3

2

尝试使用 base64_decode函数

参考http://php.net/manual/en/function.base64-decode.php

在您的情况下,它将是:

<?php    
    echo base64_decode($_GET['id']);
?>
于 2012-11-27T09:32:42.167 回答
2
$email =  base64_decode("bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==");
echo $email;  //****** You will get email here... */

请参阅.Net 中的“convert.tobase64string”是否等于 PHP 中的“base64_encode”?

于 2012-11-27T09:36:15.313 回答
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 中所要做的就是按照我第一次提到的方式进行检索,这将为您提供原始传递的字符串。

此外,正如多次指出的那样,这是您正在执行的加密,它只是确保它可以以不发生冲突的方式在 URL 中传递。

如果您确实想加密,请使用 C# 端的库,对消息进行编码,然后对其进行 base64 编码。然后在 PHP 方面你必须做相反的事情。

于 2012-11-27T09:46:02.807 回答