`
福将1032
  • 浏览: 43351 次
文章分类
社区版块
存档分类
最新评论

DES加密 util

 
阅读更多

package com.joyveb.common.utils;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import org.apache.commons.codec.binary.Base64;

import com.joyveb.common.exception.DesException;

public class DESCoder {

    private final static String CHARSET = "utf-8";

    /**
     * 对cipherText进行DES解密
     *
     * @param cipherText
     * @return
     * @throws DesException
     */
    public static String desDecrypt(String cipherText, String desKey)
            throws DesException {
        String decryptStr = null;
        try {
            // 解密
            Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

            byte[] input = Base64.decodeBase64(cipherText.trim().getBytes(
                    CHARSET));

            cipher.init(Cipher.DECRYPT_MODE, genSecretKey(desKey));
            byte[] output = cipher.doFinal(input);
            decryptStr = new String(output, CHARSET);

        } catch (Exception e) {
            throw new DesException("DES解密发生异常!", e);
        }

        return decryptStr;
    }

    /**
     * 对message进行DES加密
     *
     * @param message
     * @return
     * @throws DesException
     */
    public static String desEncrypt(String message, String desKey)
            throws DesException {
        String encryptStr = null;
        byte encryptByte[];

        try {
            // 加密
            Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE, genSecretKey(desKey));
            byte[] cipherText = cipher
                    .doFinal(message.trim().getBytes(CHARSET));
            encryptByte = Base64.encodeBase64(cipherText);
            encryptStr = new String(encryptByte, CHARSET);
            encryptStr = encryptStr.replaceAll("\r\n", "").replaceAll("\n", "");

        } catch (Exception e) {
            throw new DesException("des加密发生异常!", e);
        }
        return encryptStr;
    }

    private static SecretKey genSecretKey(String key)
            throws InvalidKeyException, NoSuchAlgorithmException,
            InvalidKeySpecException {
        DESKeySpec desKeySpec = new DESKeySpec(hexStringToByte(key));
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

        return secretKey;
    }

    private static byte[] hexStringToByte(String hex) {
        int len = (hex.length() / 2);
        byte[] result = new byte[len];
        char[] achar = hex.toCharArray();
        for (int i = 0; i < len; i++) {
            int pos = i * 2;
            result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
        }
        return result;
    }

    private static byte toByte(char c) {
        byte b = (byte) "0123456789ABCDEF".indexOf(c);
        return b;
    }
}

分享到:
评论

相关推荐

    小程序 DES加密 + 小程序 util包.zip

    小程序 DES加密 + 小程序 util包,增加小程序访问安全性

    Des3Utils.java

    利用Java进行3DES的加密算法,包含字符串密钥,偏移量加密字符串,数组密钥,偏移量加密数组,数组密钥加密数组,字符串密钥加密字符串。如果对你有帮助,麻烦给个好评吧!

    java的des加密用到的base64包

    在做java的des加密时,总是很难找到base64的包,所以放在这里方便大家使用。附带 java和php对接的des加密算法。

    DES加密算法DES加密算法

    import java.util.*; import java.security.*; public class EncryptionExample { protected String calg = "Blowfish"; // AES. DES, Blowfish protected int keyLen = 128; // 128 for AES, Blowfish, 64 ...

    js加密算法3des和md5-base64和常用工具

    3des md5 base64 util 常用加密算法对称加密和不对称加密

    Java实现Des加密(不用加载包)

    Java实现Des加密(不用加载包),有完整S盒子。 部分代码如下: ackage desJava; import java.util.*; public class Des { byte[] bytekey; public Des(String strKey) { this.bytekey = strKey.getBytes();...

    DesUtil.java

    Des加密工具类

    PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决

    先不管3DES加密的方法对不对,方法都是网上的,在运行的时候报了个错,把小弟整死了。找来找去终于自己摸出了方法。 &lt;?php /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo...

    java-util大全.rar

    java各种util整理-包含: AES加解密,Date时间处理,Des加解密,Emoji表情,Http请求,Json处理,MD5加密,FastDfs文件服务器,RSA加解密加解签名,线程工具类;

    Android代码-android

    /** Created by liu on 2015/7/27. */ import java.security.Key; ...DES算法,加密 @param data 待加密字符串 @param key 加密私钥,长度不能够小于8位 @return 加密后的字节数组,一般结合Bas

    java 工具类

    java 常用工具类,暂时包括MD5、SHA1、HMAC、3DES加密,进制转换

    Extraor.Util.Security.zip

    1.散列类型:MD5, SHA1, SHA256, SHA384, SHA512, RIPEMD160, CRC32, HMACMD5, HMACSHA1, HMACSHA...2.对称类型(含文件加/解密):DES, TripleDES, AES 3.非对称类型(含文件加/解密):RSA, DSA, ECDSA, ECDiffieHellman

    AESUtil 工具类

    java 版本的AESUtil 工具类,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

    Android代码-AndroidUtils安卓通用工具类

    写在前面: 1.此工具类为整理工具类,可能会有重复,大家可一起维护整理,添加和删除一些常用的工具类,并写上注释. 2.希望大家积极整理维护,争取创建一个强大的android工具类. ... DES加密工具类 ImageUtil新

    裁判文书反编译修改源码+加解密json数据.zip

    com.lawyee.wenshuapp.util.Encrypt //3DES加解密 .HttpTask // 网络请求 com.lawyee.wenshuapp.vo.WenShuListVO // 列表bean,可以找到数字对应的键名称 .EncryptVO //加密后bean 里面进行解密操作

    通用工具类

    3.常用加密算法工具类,包括MD5、SHA、DES、HMAC、Base64等 4.RSA加解密,RSA签名、签名验证类 5.文件处理工具类,实现文件的复制、移动、查找、追加内容等。支持自动识别文件编码,解决中文乱码问题 6.扩展Properties...

    通用Android工具库Common4Android.zip

    DES加密工具类。 DeviceUtil.java 设备信息获取工具类,获得设备型号、设备生产厂商、屏幕尺寸、GPS状态、wifi状态等。 DialogUtil.java 弹窗工具...

    java 易懂易用的MD5加密(可直接运行)(2)

    程序全文如下: 代码如下:package com.neusoft.test.util.crypt; import java.io.IOException; import java.io.UnsupportedEncodingException;... import java.util.Calendar; import javax.crypto.Ci

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java源码包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

Global site tag (gtag.js) - Google Analytics