2011-04-04 118 views
0

我在我的應用程序中實現了RC4加密/解密,如下所示。 在行異常結束時到來。asp.net中的RC4加密/解密問題

string sFNToBase64String = Convert.ToBase64String(Encoding.ASCII.GetBytes("Malhotra")); 
string sEnFirstName = CommonFunction.RC4EncryptDecrypt(sKey, sFNToBase64String); 
//calling webservice 
localhost.LoginRequest objRQ = new localhost.LoginRequest(); 
string sIsValidate = objRQ.ValidateRequest(sEnFirstName); //Exception coming on this line 

異常來

//Exception coming 

    The request failed with HTTP status 400: Bad Request. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: System.Net.WebException: The request failed with HTTP status 400: Bad Request. 

我們怎樣才能解決這個問題。

----------- UPDATE -------------------

其實問題只與加密文本「馬爾霍特拉」[加密文本:CX±£lê$ $]。 我認爲有一些特殊字符是Web服務調用不允許的。

我們該如何處理這個問題?

----------------------- Encrypted/Decrypted Process ------------------ ---

//Encrypte 
string sEnLastName = CommonFunction.RC4EncryptDecrypt(sKey, "Malhotra"); 
//Encode 
string sLNToBase64String = Convert.ToBase64String(Encoding.ASCII.GetBytes(sEnLastName)); 
//Decode 
string sDecodeLastName = Encoding.ASCII.GetString(Convert.FromBase64String(sLNToBase64String)); 
//Decrypte 
string sDeLastName = CommonFunction.RC4EncryptDecrypt(sKey, sDecodeLastName); 
+0

哪一行發生異常? – Jaymz 2011-04-04 08:22:06

+0

string sIsValidate = objRQ.ValidateRequest(sEnFirstName); – Sukhjeevan 2011-04-04 09:12:47

+0

PLZ查看更新後的問題。 – Sukhjeevan 2011-04-04 09:42:50

回答

1

第一點 - Base64是一種編碼標準,NOT加密。

它看起來好像你沒有base 64編碼的加密字符串傳遞給web服務,這是你的意圖嗎?

如果可能的話,我會建議嘗試改變這一點,要求將base 64編碼的字符串傳遞給webservice,並讓web服務在其工作前從base 64解碼回來。

對於填充,基準64只能包含A-Z,a-z,0-9,+, - 和=。這些字符不會導致您的web服務出現問題。

+0

實際上我想通過步驟1)base64編碼。步驟2)RC4加密字符串到webservice。 – Sukhjeevan 2011-04-04 10:17:20

+0

如果我通過「Raj」文本代碼工作正常。但問題在於「Malhotra」文本。我認爲在編碼和加密後,它會生成一個文本,因爲某些字符,Web服務調用不允許。我們可以按照問題中的描述來解決此問題。 – Sukhjeevan 2011-04-04 10:19:57

+1

正如我所說的,base 64在發送之前對加密的字符串進行編碼,並且一旦接收到它,就讓web服務從base 64進行解碼。 Base 64編碼的文本是「安全」的,可以通過Web服務,因爲它只包含ASCII字符。所以:加密你的字符串,然後編碼加密的字符串,把它傳遞給Web服務; Web服務然後解碼並使用加密的字符串。 – Jaymz 2011-04-04 10:28:38