2012-11-27 52 views
0

我正在加密c#中的字符串并将其发送到这样的PHP页面。如何解密.net加密的字符串在php

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

,并从这个代码genrated的URL是这样的

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

现在我想在PHP PHP O显示这同样bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA== decrpyt page.Please任何一个可以帮助我做到这一点

+7

Base64编码!=加密。 – tjameson

+0

Malik,邮件不会被加密,所以你可以发送纯文本(也许有一些网址编码,这样它可以安全地被放在一个url) – SWeko

回答

2

尝试使用base64_decode功能

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

在你的情况,这将是:

<?php  
    echo base64_decode($_GET['id']); 
?> 
+0

以及如何从asp.net页面获取查询字符串? – user1820339

+0

@ user1820339编辑我的答案。 –

+0

是的,我得到了感谢,并等待5分钟,以接受你的答案 – user1820339

0

使用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做的就是在我第一次提到的方式,会给你原来传递的字符串进行检索。

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

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