最近碰到一个很头疼的问题,试了很多方式去解决,网上关于DES加密一大堆,五花八门,没有一个标准,大部门关于不一致有一个方法很相近就是

private static byte[] iv = {1,2,3,4,5,6,7,8};
public static String encryptDES(String encryptString, String encryptKey) throws Exception {
// IvParameterSpec zeroIv = new IvParameterSpec(new byte[8]);
IvParameterSpec zeroIv = new IvParameterSpec(iv);
SecretKeySpec key = new SecretKeySpec(encryptKey.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
byte[] encryptedData = cipher.doFinal(encryptString.getBytes());
return Base64.encode(encryptedData);
}

用这个办法还是不一致,我用了将近一周的时间研究这个东西,后来我终于找到原因了。我把代码贴出来吧,希望大家碰到我一样的问题的时候可以得到一些帮助

public static String encode(String key,byte[] data) throws Exception
{
try
{
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//key的长度不能够小于8位字节
Key secretKey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);


byte[] bytes = cipher.doFinal(data);
return Base64.encode(bytes);
} catch (Exception e)
{
throw new Exception(e);
}
}

更多相关文章

  1. Android——控制edittext输入字符长度,中文占2个,英文占1个
  2. android edittext 输入长度限制并提示
  3. android中流的理解。(字节流读写与字符流的读写)
  4. C# android base-64 字符数组的无效长度
  5. Android 中获取屏幕长度及宽度
  6. android中限制EditText最大输入字节数
  7. android:限制文本长度加省略号用ellipsize
  8. Java 字节码编译为Dex,d8比dx更好用!

随机推荐

  1. NSGA-II多目标优化算法讲解(附MATLAB代码)
  2. CW节约算法构造VRPTW初始解(附MATLAB代码)
  3. 数字化转型最致命的5个误区
  4. [DM]分类-贝叶斯分类
  5. [DM]分类-决策树
  6. [DM]分类-神经网络
  7. flex容器中的四个属性的功能演示
  8. 323作业
  9. 磁盘存储管理和文件系统管理 RAID
  10. 中国各地级市坡度和经纬度数据正式开放!