繁体   English   中英

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

[英]How to decrypt a .net encrypted string in php

我正在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==

现在,我想再次解密此bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==在php中显示在php页面中。请有人帮助我执行此操作

尝试使用base64_decode函数

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

在您的情况下,它将是:

<?php    
    echo base64_decode($_GET['id']);
?>
$email =  base64_decode("bQBhAGwAaQBrAC4AYQBkAGUAZQBsAEAAcwBoAGEAawBhAHIAZwBhAG4AagAuAGMAbwBtAC4AcABrAA==");
echo $email;  //****** You will get email here... */

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

使用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方面,您必须做相反的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM