JAVA DES加密(DES/ECB/PKCS5Padding)和C#加密对应设置
来源:互联网 发布:亿乐社区系统 v2.0源码 编辑:程序博客网 时间:2024/05/18 01:46
java的:
public static String encryptDES(String paramString1, String paramString2) throws Exception { SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString2.getBytes(), "DES"); Cipher localCipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); localCipher.init(1, localSecretKeySpec); return Base64.encode(localCipher.doFinal(paramString1.getBytes())); }
对应的C#的加密解密如下:
/// <summary> /// DES加密 /// </summary> public class DES { /// <summary> /// <param name="pToEncrypt">需要加密的字符串</param> /// <param name="sKey">密钥</param> /// <summary> /// 进行DES加密 /// </summary> public string Encrypt(string pToEncrypt, string sKey) { using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] keys = new byte[8]; for (int i = 0; i < 8; i++) { keys[i] = Convert.ToByte(sKey.Substring(i * 2, 2), 16); } byte[] inputByteArray = Encoding.UTF8.GetBytes(pToEncrypt); des.Key = keys; des.IV = keys; des.Padding = PaddingMode.PKCS7; des.Mode = CipherMode.ECB; MemoryStream ms = new MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string base64 = Convert.ToBase64String(ms.ToArray()); ms.Close(); return base64; } } /// <param name="pToEncrypt">需要解密的字符串</param> /// <param name="sKey">密钥</param> // <summary> // 进行DES解密 // </summary> public string Decrypt(string pToDecrypt, string sKey) { byte[] inputByteArray = Convert.FromBase64String(pToDecrypt); using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] keys = new byte[8]; for (int i = 0; i < 8; i++) { keys[i] = Convert.ToByte(sKey.Substring(i * 2, 2), 16); } des.Key = keys; des.IV = keys; des.Padding = PaddingMode.PKCS7; des.Mode = CipherMode.ECB; MemoryStream ms = new MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string str = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return str; } } }好好看了下java的代码相关,注意到下面这句代码:
Cipher.getInstance("DES/ECB/PKCS5Padding");
搜索相关,java的PKCS5Padding 对应C#的des.Padding = PaddingMode.PKCS7;但是结果还是对应不上。
还需要设置C#的des.Mode = CipherMode.ECB;
网上找的秘钥生成那一块有点问题 需要修改一下
byte[] keys = new byte[8]; for (int i = 0; i < 8; i++) { keys[i] = Convert.ToByte(sKey.Substring(i * 2, 2), 16); }
本文抄自:http://www.cnblogs.com/yetiea/articles/3858669.html
阅读全文
0 0
- JAVA DES加密(DES/ECB/PKCS5Padding)和C#加密对应设置
- DES(ecb)加密
- objective-c java C# 3DES ECB 加密
- DES ECB模式JAVA PHP C#实现加密、解密兼容
- DES/ECB/CBC/PKCS5Padding
- java DES ECB模式对称加密解密
- java DES ECB模式对称加密解密
- android java 3des加密 ECB/CBC
- 3DES 和 ECB CBC 加密方式
- DES加密,ECB和CBC区别
- 3DES 和 ECB CBC 加密方式
- 3DES 和 ECB CBC 加密方式
- 3DES 和 ECB CBC 加密方式
- C/C++: 3DES-ECB模式加密,可以与C#和Java互通
- DES-ECB加密与解密
- C# DES和3DES加密类
- JAVA和C# 3DES加密解密
- JAVA和C# 3DES加密解密
- linux下查看CPU、内存、磁盘信息
- dblink链接数据库简介(oracle)
- 学习链接
- 程序员被提bug之后的反应
- 深度学习入门系列问题(一)
- JAVA DES加密(DES/ECB/PKCS5Padding)和C#加密对应设置
- 接口 和 抽象类 区别
- centos git 折腾
- 欧拉回路(欧拉路径)
- 最长回文串(可不连续)与最大公共子串(可不连续)
- Unsafe
- dispatch_barrier_async和dispatch_barrier_sync
- 项目——通过自动回复机器人学Mybatis(ajax优化)(四)
- 随机森林(python)