`

JAVA实现DES的一个类

阅读更多
来源:http://blog.csdn.net/s449201708/article/details/4020757
import java.security.*;

         import javax.crypto.Cipher;

         import javax.crypto.SecretKey;

         import javax.crypto.SecretKeyFactory;

         import javax.crypto.spec.DESKeySpec;

       

         /**

          * 字符串工具集合

          * @author Liudong

          */

         public class StringUtils {

       

           private static final String PASSWORD_CRYPT_KEY = "__jDlog_";

         private final static String DES = "DES";

       

         /**

          * 加密

          * @param src 数据源

          * @param key 密钥,长度必须是8的倍数

          * @return  返回加密后的数据

          * @throws Exception

          */

         public static byte[] encrypt(byte[] src, byte[] key)throws Exception {

                 //DES算法要求有一个可信任的随机数源

                 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(src);

              }

       

              /**

              * 解密

              * @param src 数据源

              * @param key 密钥,长度必须是8的倍数

              * @return   返回解密后的原始数据

              * @throws Exception

              */

              public static byte[] decrypt(byte[] src, byte[] key)throws Exception {

                 // DES算法要求有一个可信任的随机数源

                 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(src);

              }

           /**

            * 密码解密

            * @param data

            * @return

            * @throws Exception

            */

           public final static String decrypt(String data){

              try {

               return new String(decrypt(hex2byte(data.getBytes()),

                  PASSWORD_CRYPT_KEY.getBytes()));

             }catch(Exception e) {

             }

             return null;

           }

           /**

            * 密码加密

            * @param password

            * @return

            * @throws Exception

            */

           public final static String encrypt(String password){

             try {

               return byte2hex(encrypt(password.getBytes(),PASSWORD_CRYPT_KEY.getBytes()));
             }catch(Exception e) {

             }

             return null;

           }

         /**

          * 二行制转字符串

          * @param b

          * @return

          */

           public static String byte2hex(byte[] b) {

                 String hs = "";

                 String stmp = "";

                 for (int n = 0; n < b.length; n++) {

                     stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

                     if (stmp.length() == 1)

                         hs = hs + "0" + stmp;

                     else

                         hs = hs + stmp;

                 }

                 return hs.toUpperCase();

            }

          

           public static byte[] hex2byte(byte[] b) {

             if((b.length%2)!=0)

                throw new IllegalArgumentException("长度不是偶数");

                 byte[] b2 = new byte[b.length/2];

                 for (int n = 0; n < b.length; n+=2) {

                   String item = new String(b,n,2);

                   b2[n/2] = (byte)Integer.parseInt(item,16);

                 }

             return b2;
分享到:
评论

相关推荐

    基于java实现的des算法

    基于Java实现的DES算法 作为一个IT行业大师,我将从给定的文件中生成相关知识点。 标题:基于Java实现的DES算法 在这个标题中,我们可以看到这个Java程序的主要功能是实现DES(Data Encryption Standard)算法。...

    JAVA实现DES加密

    总的来说,Java实现DES加密涉及到了对称加密的概念、DES算法的原理、Java的加密API使用,以及Base64编码。理解并掌握这些知识点对于进行数据安全编程至关重要。在编写和使用这类工具类时,应确保密钥管理的安全性,...

    用java实现des加密

    在Java中,实现DES加密通常需要使用`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于执行加密和解密操作,以及`SecretKeySpec`用于创建密钥对象。以下是一个简单的Java DES加密的步骤: 1. **...

    JAVA实现DES加解密系统

    总之,这个"JAVA实现DES加解密系统"项目涵盖了对称加密、Java安全库的使用、GUI编程和文件操作等多个方面的知识,是一个很好的学习和实践案例。通过这个系统,我们可以理解如何在Java中实现加密和解密流程,同时也能...

    Java实现文件的RSA和DES加密

    Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...

    java实现DES对称加密

    总之,Java实现DES对称加密涉及了密码学的基础知识,包括密钥生成、加密解密过程等。虽然DES的原始安全性已受到质疑,但它依然作为理解对称加密概念的一个实例。开发者应根据实际需求和安全标准选择合适的加密算法和...

    3DES加密java实现

    在Java中,我们可以使用`javax.crypto`包中的`Cipher`类来实现3DES加密和解密。首先,我们需要创建一个`SecretKeySpec`对象,用于存储我们的密钥。密钥长度可以是128位(16字节),但3DES实际只使用其中的112位或168...

    DES算法Java实现

    在Java中实现DES算法,主要涉及到`java.security`和`javax.crypto`这两个包。首先,我们需要创建一个`SecretKey`对象,这个对象包含了用于加密和解密的密钥。DES密钥长度固定为64位,但实际有效位只有56位,因为每8...

    des加密解密java实现版本

    以下是使用Java实现DES加密的步骤: 1. **生成密钥**: 首先,我们需要一个密钥。在Java中,我们使用`KeyGenerator`类生成DES密钥。代码示例: ```java KeyGenerator keyGen = KeyGenerator.getInstance("DES")...

    Java实现DES算法

    自己写的一个算法实现,一个.java文件,直接运行就行,能够任意给定密钥,给任意64位明文加密、解密。已经检验没问题,内含示例,稳的一批。

    DES.rar_DES java_DES JAVA_Des___JAVA_des_java des

    标题中的"DES.rar_DES java_DES JAVA_Des___JAVA_des_java des"表明这是一个关于Java实现DES加密算法的压缩包文件。DES(Data Encryption Standard)是一种广泛应用的块密码,它在1970年代由IBM开发,后来被美国国家...

    DES加密算法JAVA实现(带简单界面)

    在Java中实现DES加密,主要涉及到`javax.crypto`包中的类,如`KeyGenerator`用于生成密钥,`Cipher`用于进行加解密操作。首先,你需要生成一个DES密钥,这通常包括设定密钥长度(DES的标准长度为56位,但在Java中是...

    java实现DES

    "java实现DES加密算法" Java实现DES(Data Encryption Standard)加密算法是一种对称加密算法,该算法使用Feistel网络结构,通过分组网络和子密钥生成来实现加密和解密。下面是Java实现的DES加密算法的知识点: ...

    JAVA实现DES算法

    JAVA实现DES加密 public class DES1 { public static final String KEY_ALGORITHM = "DES"; public static final String CIPHER_ALGORITHM="DES/ECB/PKCS5Padding"; private static Key toKey(byte[] key) ...

    Java 实现DES算法源码

    总的来说,通过Java实现DES算法,我们需要理解对称加密的概念,了解DES算法的基本工作原理,以及如何使用Java的加密API来操作这些算法。同时,为了保证安全性,现代加密通常使用更强大的算法如AES,以及更安全的密钥...

    java实现的des算法

    #### 二、Java实现DES算法的关键点 ##### 1. 密钥生成 在Java中,可以使用`KeyGenerator`类来生成DES密钥。该类提供了初始化密钥生成器的方法,可以通过指定加密算法名称来创建特定类型的密钥生成器实例。 ```java...

    DES_DES加密算法JAVA实现_

    这个文件通常会定义一个类,包含静态方法来执行加密和解密操作,接收字节数组作为输入,返回加密或解密后的字节数组。类中可能还包含了一些辅助方法,如用于处理字节流、Base64编码等。 需要注意的是,DES由于其56...

    Java实现的3DES

    1. 密钥生成:首先,你需要创建一个3DES密钥。Java的`javax.crypto.SecretKeyFactory`和`javax.crypto.spec.DESedeKeySpec`类可用于此目的。你可以生成一个24字节的密钥,前16字节作为第一个密钥,中间8字节为第二个...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...

    用delphi写的一个des的加密解密小程序,java写的des的一个类

    Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java实现的DES加密类。DES是一种广泛使用的对称加密...

Global site tag (gtag.js) - Google Analytics