`
medius
  • 浏览: 3828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java DES 加密和解密源码

des 
阅读更多

Java密码学结构设计遵循两个原则:

1) 算法的独立性和可靠性。

2) 实现的独立性和相互作用性。

算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供器,可将包含提供器的ZIPJAR文件放在CLASSPATH,再编辑Java安全属性文件来设置定义一个提供器。

 

DES算法及如何利用DES算法加密和解密类文件的步骤

DES算法简介
DESData Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:KeyDataMode。其中Key8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;ModeDES的工作方式,有两种:加密或解密。

package com.afreon.util;

import java.io.IOException;
import java.security.SecureRandom;

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

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class DesUtil {

    private final static String DES = "DES";

    public static void main(String[] args) throws Exception {
        String data = "123 456";
        String key = "wang!@#$%";
        System.err.println(encrypt(data, key));
        System.err.println(decrypt(encrypt(data, key), key));

    }
   
    /**
     * Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    public static String encrypt(String data, String key) throws Exception {
        byte[] bt = encrypt(data.getBytes(), key.getBytes());
        String strs = new BASE64Encoder().encode(bt);
        return strs;
    }

    /**
     * Description 根据键值进行解密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws IOException
     * @throws Exception
     */
    public static String decrypt(String data, String key) throws IOException,
            Exception {
        if (data == null)
            return null;
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] buf = decoder.decodeBuffer(data);
        byte[] bt = decrypt(buf,key.getBytes());
        return new String(bt);
    }

    /**
     * Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();

        // 从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成加密操作
        Cipher cipher = Cipher.getInstance(DES);

        // 用密钥初始化Cipher对象
        cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

        return cipher.doFinal(data);
    }
   
   
    /**
     * Description 根据键值进行解密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();

        // 从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成解密操作
        Cipher cipher = Cipher.getInstance(DES);

        // 用密钥初始化Cipher对象
        cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

        return cipher.doFinal(data);
    }
}
  转载,能运行~~
分享到:
评论

相关推荐

    Java版Des加密解密源码

    java版Des加密解密源码 DES加密解密程序的主程序在 FileDES类中 运行时使用的例子是本目录下的111.doc文件,运行后自动生成222.doc文件和333.doc文件。 其中111.doc文件加密后的文件是222.doc文件,222.doc文件...

    java_DES加密解密源码.rar_DES加密_des_java DES_java des_加密 解密

    Java实现des加密解密算法,des加密解密算法

    Des加密解密源码——JAVA版

    本资源提供了JAVA版的DES加密解密源码,对于学习和理解DES算法以及在实际项目中的应用非常有帮助。 首先,`Des.java` 文件很可能是核心的加密解密类,它可能包含了初始化DES密钥、创建Cipher对象、执行加密和解密...

    JAVA版Des加密解密源码

    在提供的压缩包文件中,我们看到几个关键的文件名,如`Des.java`、`SubKey.java`和`FileDES.java`,这些文件很可能是实现DES加密解密功能的Java类。下面将分别解释这些可能包含的内容: 1. `Des.java`: 这个文件很...

    带界面的DES加密解密java源码

    DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM在1970年代初开发,后被美国国家标准局(NIST)采纳为标准。...通过对这些源码的学习和分析,可以深入了解DES加密解密的原理以及Java中如何实现。

    Des加密解密源码JAVA版

    Des加密解密源码JAVA版 Des加密解密源码JAVA版

    java_DES加密解密源码

    java DES加密解密源码,详细讲述了DES加密解密算法的实现,从原理出发,适合入门。

    DES 加密 解密源码 java版 可运行

    这个Java版的DES加密解密源码可以作为学习和实践的基础,对于理解对称加密的基本工作原理和Java加密API的使用非常有帮助。同时,开发者应意识到DES的局限性,避免在安全性要求高的场景下单独使用。

    DES算法加密解密C++源码及程序(完整的工程文件)

    DES算法加密解密C++源码及程序(完整的工程文件),内容绝对完整,VC++6.0完美打开,控制台应用程序,而且可以计算加密解密时间的哦

    java php DES 加密解密

    在这个主题中,我们将深入探讨Java和PHP如何实现DES加密解密。 在Java中,DES加密解密主要通过`javax.crypto`包中的类来实现。首先,我们需要一个密钥,通常是8字节的字节数组。然后,使用`KeyGenerator`生成一个...

    C#DES标准ECB加密解密示例源码

    C#DES标准ECB加密解密示例源码,根据标准的C改的源码,与网上所搜索到的完全不一样,可以支持中文为密钥的加密,也可以支持为中文字符串的加密,如,密钥为:替天行道,明文为:来自替天行道的C#DES标准ECB加密解密...

    DES加密java的完美实现源码

    在"DESPro1"这个源码文件中,很可能包含了上述的Java DES加密和解密的完整流程,对于初学者来说,这是一个很好的学习资源。通过阅读和理解代码,可以深入理解DES加密原理,以及Java如何实现对称加密算法。同时,这个...

    c#版字符串DES加密解密工具源码

    总的来说,这个C#版的字符串DES加密解密工具源码是一个很好的学习资源,可以帮助开发者深入理解加密和解密的原理,以及如何在实际项目中应用这些技术。在实际开发中,结合最新的加密标准和最佳实践,可以确保数据的...

    Des加密解密C#源码

    Des加密解密C#源码,很实用 byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = Encoding.ASCII.GetBytes(kesVector); byte[] inputByteArray = Encoding.UTF8.GetBytes...

    java DES 加密解密算法(内有测试)

    下面我们将深入探讨DES加密解密的基本原理和Java中的实现步骤。 **DES加密原理** DES加密算法包含以下几个主要步骤: 1. **初始置换(IP)**:将64位的明文数据进行重新排列。 2. **16轮迭代**:每轮包含四个步骤...

    很强的Java加密解密算法源码.zip

    在这个"很强的Java加密解密算法源码.zip"中,我们可以深入学习如何在Java中实现3DES算法来加密和解密文件。 3DES算法是一种块加密算法,它通过三次应用DES密钥来增强安全性。基本流程如下: 1. **加密过程**:输入...

    java_3des加密源码

    8. **DesEncrypt.java文件**:这个文件很可能是包含上述3DES加密解密操作的Java源代码。源码通常会包含一个类,如`DesEncrypt`,该类可能有静态方法来执行加密和解密,方法参数可能包含待处理的字节数组、密钥等。 ...

    java代码-使用java解决DES加密解密的源代码

    java代码-使用java解决DES加密解密的源代码 ——学习参考资料:仅用于个人学习使用!

    DES加密DEMO(C#与JAVA)

    - **javax.crypto命名包**:JAVA中使用`javax.crypto.Cipher`类配合`DESKeySpec`和`SecretKeyFactory`实现DES加密解密。首先需要创建`DESKeySpec`对象,然后通过`SecretKeyFactory`生成`SecretKey`,再用`Cipher`...

Global site tag (gtag.js) - Google Analytics