码迷,mamicode.com
首页 > 编程语言 > 详细

Des加密算法java实现

时间:2017-07-27 18:32:19      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:desc   ram   digest   div   static   tor   tostring   cep   mod   

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实现

标签:desc   ram   digest   div   static   tor   tostring   cep   mod   

原文地址:http://www.cnblogs.com/cs99lzzs/p/7245960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!