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

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包.zip”资源包通过提供DES加密算法的实现,以及一系列实用的开发工具,为小程序的安全性和开发效率提供了双重支持。开发者在使用这一资源包时,不仅能有效提升小程序的...

    php实现DES 加密 匹配java的des加密 验证

    首先,我们来了解一下DES加密的基本原理。DES使用56位的密钥对64位的数据块进行操作,通过一系列复杂的置换和异或运算,将明文转化为密文。尽管DES的安全性在今天已经相对较弱,但由于其简单性和广泛的库支持,它...

    DES加密前端js和后台java互通代码

    在本文中,我们将深入探讨DES加密的原理以及如何在前端JavaScript和后端Java之间实现互通。 DES算法基于Feistel结构,它将明文分为左右两半进行迭代处理,通过64轮的加密过程将原始信息转化为密文。每个轮次包括一...

    JAVA实现DES加密

    在Java中实现DES加密,我们可以按照以下步骤进行。 首先,让我们理解DES算法的基本原理。DES是一种分组密码,它将明文数据分为64位的数据块进行处理。但是,实际的DES算法只使用了56位的密钥,因为其中8位是奇偶...

    js与java des加密

    DES(Data Encryption Standard)是一种广泛使用的对称加密算法,为保护数据的隐私提供了基础。本篇文章将详细探讨 JavaScript 和 Java 实现 DES 加密算法,并讨论如何在两者之间实现互通。 **DES 算法介绍** DES ...

    实现使用3des在页面js加密,后台java解密

    本篇将详细介绍如何在网页前端使用JavaScript进行3DES加密,并在后端Java环境中进行解密。 一、3DES加密原理 3DES是DES的加强版,它使用了3个不同的56位密钥,通过3次独立的DES加密过程来提高安全性。具体流程如下...

    des加密算法的JAVA 实现

    在Java中实现DES加密和解密并不复杂,主要涉及到`javax.crypto`包中的类。下面我们将详细介绍如何使用JAVA来实现DES算法: 1. 导入必要的库: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey;...

    JAVA中3des加密算法.pdf

    4. **解密过程**:解密过程与加密相反,首先使用密钥K1进行DES解密,然后使用密钥K2进行DES加密,最后使用密钥K1再次解密。这样,如果K1和K2相同,就相当于使用同一个密钥进行了两次DES操作,从而恢复原始明文。 在...

    Des3Utils.java

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

    JAVA中3des加密算法

    在Java中实现3DES加密和解密涉及到以下几个关键点: 1. **密钥生成**:在Java中,你可以使用`java.security.KeyGenerator`类来生成3DES密钥。首先需要实例化一个`KeyGenerator`对象,然后调用`init()`方法初始化它...

    3des加密解密

    ### 3DES加密解密详解 #### 一、概述 三重数据加密标准(Triple Data Encryption Standard,简称3DES)是一种基于DES(Data Encryption Standard)的加密算法,它通过使用两个或三个不同的密钥对数据进行三次加密...

    java的des加密用到的base64包

    在Java中,实现DES加密通常需要使用`javax.crypto`包中的类,但在这个场景中,我们关注的是与Base64编码相关的部分,因为Base64是用于在网络上传输含有二进制数据的文本格式。在Java 8及更高版本中,`java.util.Base...

    Java与c语言 DES加密互通

    在Java和C语言中实现DES加密互通,主要涉及以下几个关键步骤: 1. 密钥处理:DES支持56位的密钥,但Java和C语言中通常使用64位的密钥,其中第8位用于奇偶校验。在Java中,可以使用`java.security.Key`接口的实现类`...

    简明DES加密算法实现.docx

    简明 DES 加密算法实现 DES 加密算法是一种经典的对称加密算法,由美国国家标准与技术研究院(NIST)于 1977 年公布,广泛应用于商业和政府领域。该算法将明文按照 64 位分组,每个分组独立加密,输出 64 位密文。...

    DES加密解密工具类

    本文将详细介绍DES加密解密工具类及其使用,并解析在给定的文件列表中的`SecurityPropertyes.java`、`CryptoTools.java`和`SecurityUtil.java`这三个文件可能包含的内容。 首先,`CryptoTools.java`很可能是实现DES...

    常用MD5加密算法和3-DES加密算法java实现

    ### 常用MD5加密算法和3-DES加密算法Java实现 在现代软件开发过程中,数据的安全性变得越来越重要。对于数据传输和存储过程中的安全性保障,加密技术发挥着至关重要的作用。本文将详细介绍如何在Java环境中实现两种...

    java-android:AES加密,RAS加密,DES加密,MD5加密,Base64加密,异或加密

    本文将详细介绍Java中常见的几种加密算法,包括AES加密、RSA加密、DES加密、MD5哈希加密、Base64编码以及异或(XOR)加密。理解并掌握这些算法对于开发安全的应用至关重要。 首先,AES(Advanced Encryption Standard...

    利用DES加密算法保护Java源代码

    ### 利用DES加密算法保护Java源代码 #### 一、引言 随着信息技术的快速发展,数据的安全性问题越来越受到人们的重视。对于软件开发者来说,保护自己的Java源代码不被非法访问或篡改是非常重要的。Java作为一种跨...

    des java js 加密解密

    本篇文章将详细探讨DES加密解密在Java和JavaScript中的应用,并且重点讨论如何确保在两者之间得到一致的结果。 DES算法基于64位的块加密,使用56位的密钥进行操作。它通过一系列复杂的数学变换,将明文数据转换成...

Global site tag (gtag.js) - Google Analytics