我已經閱讀了我的標題一些話題,所以我不能用它來解決我的問題。所以,我打開一個新的話題... 我想創建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);
> }
這是一個很大的圖書館。發佈您的代碼或解釋您如何使用它。 –
這裏的C#代碼: –
請編輯您的問題。另外,請發佈兩種語言的代碼。 –