我已经阅读了我的标题一些话题,所以我不能用它来解决我的问题。所以,我打开一个新的话题... 我想创建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#代码: –
请编辑您的问题。另外,请发布两种语言的代码。 –