2011-10-22 149 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非常灵活,我可以压缩它们并发送给您吗? –