C语言的3des、java的3des、C#的3des。三种加密遇到的问题
2011-05-19 16:27
866 查看
今天疼的我蛋都碎了。
我用C#对一字符串进行加密。总是与C语音和java的加密结果不一致。最终还是因为填充模式和运算模式的问题。。
代码如下
我用C#对一字符串进行加密。总是与C语音和java的加密结果不一致。最终还是因为填充模式和运算模式的问题。。
代码如下
public static string TripleDESEncrypt(string pToEncrypt, string sKey) { try { TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = new Byte[] {0, 00, 00, 00, 00, 00, 00, 00, };// ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0, 8)); des.Mode = CipherMode.ECB; des.Padding = PaddingMode.Zeros; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock();; StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } ret.ToString(); return ret.ToString(); } catch (Exception ex) { return ex.Message; } } ///DES解密 public static string TripleDESDecrypt(string pToDecrypt, string sKey) { TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Mode = CipherMode.ECB; des.Padding = PaddingMode.Zeros; byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; for (int x = 0; x < pToDecrypt.Length / 2; x++) { int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); des.IV = new Byte[] { 0, 00, 00, 00, 00, 00, 00, 00, }; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); return System.Text.Encoding.Default.GetString(ms.ToArray()); }
相关文章推荐
- JAVA安卓和C# 3DES加密解密的兼容性问题
- java之php、Android、JAVA、C# 3DES加密解密
- JAVA和C# 3DES加密解密
- Android: JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- java AES加密遇到的一些问题
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- Android 3DES加密解密(JAVA和C#)
- C#(TripleDES)对应Java(3DES)加密工具类
- .net中使用TripleDESCryptoServiceProvider进行3DES加密遇到弱密钥的问题
- objective-c java C# 3DES ECB 加密
- C#和JAVA 3DES加密解密
- 3DES加密 java与 C# 可以相互加密解密
- C# 调用 JavaWebservice服务遇到的问题汇总
- JAVA安卓和C# 3DES加密解密的兼容性问题(2013年8月修改版)
- Android 3DES加密解密(JAVA和C#)
- java php c# 三种语言的AES加密互转
- JAVA和C# 3DES加密解密