2011-10-22 77 views
-1

我已經閱讀了我的標題一些話題,所以我不能用它來解決我的問題。所以,我打開一個新的話題... 我想創建2個函數使用對稱加密在Java(對於Android應用程序)和C#(我的服務器)加密和解密加密Java和解密C#和反向

客戶端(Java):加密(ClearText1,Key )=祕密 - >服務器:解密(祕密密鑰)= ClearText1 和 服務器(JAVA):加密(ClearText2,密鑰)=祕密 - >客戶端:解密(祕密密鑰)= ClearText2

我已經使用BouncyCastle Library對於java和C#,但是java中的字節是-128..127,而C#中的字節是0..255,並沒有負數據。所以客戶端和服務器的加密和解密失敗。

請幫我(或分享我要我的問題庫)。謝謝!

在這裏,在C#代碼: 如何使用他們的java?請注意,在C#和Java數據類型「字節」不匹配 (當然,加密和2個以下funcions解密數據是真實的)

>  public string _secretPhrase = "123abc456"; 
>  public string EncryptData(string plainText) 
>  { 
>   DES des = new DESCryptoServiceProvider(); 
>   des.Mode = CipherMode.ECB; 
>   des.Padding = PaddingMode.PKCS7; 
> 
>   des.Key = Encoding.UTF8.GetBytes(_secretPhrase.Substring(0, 8)); 
>   des.IV = Encoding.UTF8.GetBytes(_secretPhrase.Substring(0, 8)); 
> 
>   byte[] bytes = Encoding.UTF8.GetBytes(plainText); 
>   byte[] resultBytes = des.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length); 
> 
>   return Convert.ToBase64String(resultBytes); 
>  } 
> 
>  public string DecryptData(string encryptedText) 
>  { 
>   DES des = new DESCryptoServiceProvider(); 
>   des.Mode = CipherMode.ECB; 
>   des.Padding = PaddingMode.PKCS7; 
>   des.Key = Encoding.UTF8.GetBytes(_secretPhrase.Substring(0, 8)); 
>   des.IV = System.Text.Encoding.UTF8.GetBytes(_secretPhrase.Substring(0, 8)); 
> 
>   byte[] bytes = Convert.FromBase64String(encryptedText); 
>   byte[] resultBytes = des.CreateDecryptor().TransformFinalBlock(bytes, 0, bytes.Length); 
> 
>   return Encoding.UTF8.GetString(resultBytes); 
>  } 
+1

這是一個很大的圖書館。發佈您的代碼或解釋您如何使用它。 –

+0

這裏的C#代碼: –

+0

請編輯您的問題。另外,請發佈兩種語言的代碼。 –

回答

0

它看起來並不像你正在使用BouncyCastle的。這看起來像是股票.NET Framework加密代碼。 BouncyCastle使用DesEngine等命名約定。

我建議您嘗試使用BouncyCastle同時使用C#Java。我不相信字節差異將是一個實際問題。圖書館應該正確地解釋它。

而且,單DES現在被認爲是非常弱的。在合理的硬件上有single day attacks反對它,它不再是一個認可的標準。而是看看AES。

最後,我不知道使用相同的密鑰和IV是明智的。我不是密碼學專家,但使用兩個不同的隨機數應該更安全。

+0

該代碼不是BouncyCastle,因爲使用「字節」數據類型進行加密或解密時它失敗。 –

+0

@black_star,發佈您的BouncyCastle代碼(對於C#和Java,如果有的話)。我懷疑庫只是不能加密字節數組(這是它的全部重點)。最有可能的是,你必須糾正你的代碼。 –

+0

BouncyCastle非常靈活,我可以壓縮它們併發送給您嗎? –