2012-11-27 50 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方面,你不得不做相反的事情。