Des加密算法java实现
Posted 跳刀不跳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Des加密算法java实现相关的知识,希望对你有一定的参考价值。
package com.cs99lzzs.shop.util; import java.math.BigInteger; import java.security.Key; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import org.apache.commons.lang.StringUtils; /** * 加密算法 * * @version $Id: DesCbcSecurity.java, v 0.1 2017年7月24日 上午9:41:59 chenxu Exp $ */ public class DesCbcSecurity { public static final String ALGORITHM_DES = "DES/CBC/PKCS5Padding"; /** * * @param data * @param key * @return * @throws Exception */ public static String encode(String data, String key) throws Exception { if (StringUtils.isEmpty(key) || StringUtils.isEmpty(data)) { return null; } return encode(data.getBytes(), key); } /** * DES算法,加密 * * @param data * 待加密字符串 * @param key * 加密私钥,长度不能够小于8位 * @return 加密后的字节数组,一般结合Base64编码使用 * @throws CryptException * 异常 */ private static String encode(byte[] data, String key) 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(key.getBytes()); AlgorithmParameterSpec paramSpec = iv; cipher.init(Cipher.ENCRYPT_MODE, secretKey, paramSpec); byte[] bytes = cipher.doFinal(data); return asHex(bytes); } catch (Exception e) { throw new Exception(e); } } public static String md5(String input) throws NoSuchAlgorithmException { String result = input; if(input != null) { MessageDigest md = MessageDigest.getInstance("MD5"); //or "SHA-1" md.update(input.getBytes()); BigInteger hash = new BigInteger(1, md.digest()); result = hash.toString(16); while(result.length() < 32) { //40 for SHA-1 result = "0" + result; } } return result; } public static String asHex (byte buf[]) { StringBuffer strbuf = new StringBuffer(buf.length * 2); int i; for (i = 0; i < buf.length; i++) { if (((int) buf[i] & 0xff) < 0x10) strbuf.append("0"); strbuf.append(Long.toString((int) buf[i] & 0xff, 16)); } return strbuf.toString(); } }
以上是关于Des加密算法java实现的主要内容,如果未能解决你的问题,请参考以下文章