C# 代码块
public static string Encrypt(string Text, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //声明一个工具类DES byte[] inputByteArray; inputByteArray = Encoding.Default.GetBytes(Text); // 输入的密码转byte[] des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); // 工具类的key设置 处理方式:key 进行md5 哈希 然后截取前8位 des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));// 工具类的IV设置 System.IO.MemoryStream ms = new System.IO.MemoryStream(); //声明流对象 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); //设置流对象参数 cs.Write(inputByteArray, 0, inputByteArray.Length); //执行写入ms cs.FlushFinalBlock(); //字节流结束关闭 StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) //遍历ms { ret.AppendFormat("{0:X2}", b); //转16进制字节流 } return ret.ToString(); }
对应java 代码
public static String pwd(String pwd,String sKey){ pwd = pwd.toLowerCase(Locale.ROOT); byte[] bytes = encrypt(pwd,sKey); StringBuilder stringBuilder = new StringBuilder(); for (byte b:bytes ) { stringBuilder.append(String.format("%02x",b)); } String ss = stringBuilder.toString().toLowerCase(Locale.ROOT); return ss; } public static byte[] encrypt(String pwd,String sKey){ String k = hashString(sKey,"MD5").substring(0,8).toUpperCase(Locale.ROOT); try { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); //声明工具类 CBC模式 DESKeySpec dks = new DESKeySpec(k.getBytes("utf-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); Key secretKey = keyFactory.generateSecret(dks); //工具类的key设置 IvParameterSpec iv = new IvParameterSpec(k.getBytes("utf-8")); //工具类的IV设置 偏移量 cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); return cipher.doFinal(pwd.getBytes("UTF-8")); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 进行hash * @param input * @param algorithm * @return */ public static String hashString(String input, String algorithm) { try { MessageDigest digest = MessageDigest.getInstance(algorithm); byte[] bytes = digest.digest(input.getBytes()); StringBuilder sb = new StringBuilder(); // 打印哈希值的字节表示 for (byte b : bytes) { sb.append(String.format("%02x",b)); //转 } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } }
public static void main(String[] args) { String key = "*******"; String value="********"; String a=pwd(value,key); System.out.println(a); }