`
zhaohaolin
  • 浏览: 1003566 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java的常用 MD5 DES加密代码【转】

    博客分类:
  • JAVA
阅读更多
    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;

    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;

    /**
    * 一般加密解密工具<br>
    * DESede/DES/BlowFish<br>
    * DES的密钥(key)长度是为8个字节,加密解密的速度是最快的<br>
    * DESede的密钥(key)长度是24个字节<br>
    * BlowFish的密钥(key)是可变的 加密最快,强度最高,密钥长度范围(1<=key<=16)<br>
    *
    * @author songdawei
    * @version 1.0
    * @date 2008-10-20
    */
    public class SecretCodeUtil {
            public final static String DES = "DES";
            public final static String DESEDE = "DESede";
            public final static String BLOWFISH = "BlowFish";
            public final static String MD5 = "MD5";

            /**
             * md5加密
             *
             * @param plainText
             * @return
             */
            public static String getMD5ofStr(String plainText) {
                    try {
                            return getMD5ofStr(string2Bytes(plainText));
                    } catch (Exception e) {
                            e.printStackTrace();
                    }
                    return null;
            }

            public static String getMD5ofStr(byte str[]) {
                    try {
                            MessageDigest md = MessageDigest.getInstance(MD5);
                            md.update(str);
                            byte b[] = md.digest();
                            return bytes2HexString(b);

                    } catch (Exception e) {
                            e.printStackTrace();
                    }
                    return null;
            }

            /**
             * 对数据源进行加密
             *
             * @param src
             *            数据源
             * @param key
             *            密钥
             * @param name
             *            算法的名称
             * @return 返回加密后的数据
             * @throws Exception
             */
            public static byte[] encrypt(byte[] src, byte[] key, String name)
                            throws Exception {

                    SecretKeySpec securekey = new SecretKeySpec(key, name);
                    // Cipher对象实际完成加密操作
                    Cipher cipher = Cipher.getInstance(name);
                    // 用密匙初始化Cipher对象
                    cipher.init(Cipher.ENCRYPT_MODE, securekey);
                    // 现在,获取数据并加密
                    // 正式执行加密操作
                    return cipher.doFinal(src);
            }

            /**
             * 对加密的数据源进行解密
             *
             * @param src
             *            数据源
             * @param key
             *            密钥
             * @param name
             *            算法的名称
             * @return 返回解密后的原始数据
             * @throws Exception
             */
            public static byte[] decrypt(byte[] src, byte[] key, String name)
                            throws Exception {

                    SecretKeySpec securekey = new SecretKeySpec(key, name);
                    // Cipher对象实际完成解密操作
                    Cipher cipher = Cipher.getInstance(name);
                    // 用密匙初始化Cipher对象
                    cipher.init(Cipher.DECRYPT_MODE, securekey);
                    // 现在,获取数据并解密
                    // 正式执行解密操作
                    return cipher.doFinal(src);
            }

            /**
             * 二行制转字符串
             *
             * @param b
             * @return
             */
            public static String bytes2HexString(byte[] bytes) {
                    String hs = null;
                    if (bytes != null) {
                            final int size = bytes.length;
                            if (size > 0) {
                                    StringBuilder sb = new StringBuilder();
                                    for (int i = 0; i < size; i++) {
                                            String tmp = (java.lang.Integer.toHexString(bytes[i] & 0XFF));
                                            if (tmp.length() == 1) {
                                                    sb.append("0" + tmp);
                                            } else {
                                                    sb.append(tmp);
                                            }
                                    }
                                    hs = sb.toString().toUpperCase();
                            }
                    }
                    return hs;
            }

            public static byte[] hex2byte(byte[] b) {
                    if ((b.length % 2) != 0) {
                            return null;
                    }
                    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;
            }
           
            /**
             * 十六进位格式字符串转二进制流。
             *
             * @param hs String
             * @return byte[]
             */
            public static byte[] hexString2Bytes (String hs) {
                    byte[] bytes = null;
                    if (hs != null) {
                            final int size = (hs.length()) / 2;
                            if (size > 0) {
                                    bytes = new byte[size];
                                    for (int i = 0; i < size; i++) {
                                            String hsByte = hs.substring(i * 2, i * 2 + 2);
                                            byte b = 0;
                                            try {
                                                    b = (byte) (Integer.parseInt(hsByte, 16));
                                            } catch (java.lang.NumberFormatException e) {
                                                    b = 0;
                                            }
                                            bytes[i] = b;
                                    }
                            }
                    }
                    return bytes;
            }

            /**
             * 字符串解密
             *
             * @param data
             *            字符串加密数据
             * @param key
             *            密钥
             * @param name
             *            算法名称
             * @return
             * @throws Exception
             */
            public static String decrypt(String data, String key, String name) {
                    try {
                            return new String(decrypt(hex2byte(data.getBytes()),
                                            string2Bytes(key), name));
                    } catch (Exception e) {

                    }
                    return null;
            }
           
            /**
             * 字符串解密
             *
             * @param data
             *            字符串加密数据
             * @param key
             *            密钥
             * @param name
             *            算法名称
             * @return
             * @throws Exception
             */
            public static String decrypt(String data, byte[] key, String name) {
                    try {
                            return new String(decrypt(hex2byte(data.getBytes()),key, name));
                    } catch (Exception e) {

                    }
                    return null;
            }
           
            /**
             * 把字符串转化成 Unicode Bytes.
             *
             * @param s String
             * @return byte[]
             */
            public static byte [] string2Bytes(String s) {
                    byte[] bytes = null;
                    if (s != null) {
                            try {
                                    bytes = s.getBytes("utf-8");
                            } catch (UnsupportedEncodingException e) {
                                    e.printStackTrace();
                            }
                    }
                    return bytes;
            }

            /**
             * 根据 Unicode Bytes 构造字符串.
             *
             * @param bytes byte[]
             * @return String
             */
            public static String bytes2String (byte[] bytes) {
                    String s = null;
                    if (bytes != null) {
                            try {
                                    s = new String(bytes, "utf-8");
                            } catch (Exception e) {
                                    e.printStackTrace();
                            }
                    }
                    return s;
            }

           
            /**
             * 字符串加密
             *
             * @param data
             *            字符串数据
             * @param key
             *            密钥
             * @param name
             *            算法名称
             * @throws Exception
             */
            public static String encrypt(String data, byte[] key, String name) {
                    try {
                            return bytes2HexString(encrypt(data.getBytes(), key, name));
                    } catch (Exception e) {
                            e.printStackTrace();
                    }
                    return null;
            }
           
            /**
             * 字符串加密
             *
             * @param data
             *            字符串数据
             * @param key
             *            密钥
             * @param name
             *            算法名称
             * @throws Exception
             */
            public static String encrypt(String data, String key, String name) {
                    try {
                            return bytes2HexString(encrypt(data.getBytes(), string2Bytes(key), name));
                    } catch (Exception e) {
                            e.printStackTrace();
                    }
                    return null;
            }
    }
 
分享到:
评论

相关推荐

    java常用类-MD5加密与DES加密解密

    java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用

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

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

    MD5 3DES 双重加密 demo

    总结起来,"MD5 3DES 双重加密 demo"是一个关于如何在Java环境中结合MD5和3DES进行数据加密的实例,它展示了如何利用这两种技术提高数据的安全性。通过学习和理解这个demo,开发者可以更好地理解和运用这些加密技术...

    C# 对接 Java 3des md5WithRsa

    本篇文章将详细讲解如何在C#中实现与Java的3DES加密以及MD5withRSA签名的对接。 3DES(Triple Data Encryption Algorithm)是一种对称加密算法,它使用了DES(Data Encryption Standard)算法三次,增强了加密强度...

    DES加密DEMO(C#与JAVA)

    本DEMO提供了C#和JAVA两种编程语言下的DES加密和解密实现,这对于理解DES算法及其在实际开发中的应用非常有帮助。 1. **DES算法原理** - **结构**:DES算法基于Feistel网络,它将明文分为左右两半,通过一系列的...

    Java实现的Base64、MD5、3DES三种工具

    Java实现的Base64、MD5、3DES三种工具 ...本文档提供了Java实现的Base64、MD5两种加密工具的示例代码,并对每种加密工具的实现进行了详细的解析。这些加密工具可以广泛应用于数据加密、身份验证和加密等领域。

    JAVA工具类(整合,xml,json,MD5,加密解密)

    本资源提供的"JAVA工具类"整合了XML处理、JSON操作、MD5加密以及加解密功能,对提高开发效率大有裨益。 1. **XML处理**: - DOM解析:DOM(Document Object Model)是一种将XML文档映射为树形结构的方法,通过它...

    JAVA-MD5pass_src.rar_MD5 JAVA_des算法_java 加密_加密算法

    在Java中,可以使用`javax.crypto.Cipher`类来实现DES加密。 ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; ...

    MD5、AES、DES加密的java实现

    ### MD5、AES、DES 加密的 Java 实现 #### 一、MD5加密 **MD5**(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据转换成一个固定长度(通常是128位)的十六进制字符串。这种哈希值...

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

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

    servlet中md5加密

    首先,你需要在代码中引入`java.security.MessageDigest`包,这是实现MD5加密的基础。 ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ``` #### 2. 创建MD5加密类 ...

    常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹

    一些常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹等

    JAVA代码实现MD5编码

    虽然题目中提到了DES.cpp文件,但DES(Data Encryption Standard)是一种加密算法,与MD5(一种哈希函数)不同,这里并未提供具体的DES实现细节。如果你需要了解更多关于DES的信息,它是一种对称加密算法,通常用于...

    Java实现DES、RSA、MD5

    在Java中,可以通过`Cipher`类和`DESKeySpec`类来实现DES加密和解密。首先,需要创建一个`DESKeySpec`对象,然后使用`KeyFactory`生成`SecretKey`,最后通过`Cipher`对象的`init`方法初始化加密或解密模式,并调用`...

    java数字签名,md5大小文件验证,DES加密解密RSA加密解密,SWT浏览器插件的等源码工程实例

    `DESCipher.java`和`DESCipherProtocal.java`可能实现了DES加密和解密的函数,使用`javax.crypto.Cipher`类进行操作。DES通常适用于小量数据加密,因为其密钥长度相对较短(64位)。 4. **RSA加密解密**:RSA是一种...

    暴力破解AES DES SHA MD5

    用java写的暴力破解,专门破解AES,DES,SHA,MD5. 你们可以自己再次的去完善一下,这里纯属简单版本。 用java写的暴力破解,专门破解AES,DES,SHA,MD5. 你们可以自己再次的去完善一下,这里纯属简单版本。 用java写的...

    des加密解密MD5签名RSA加密解密

    总共两个用户 A和B, A负责加密,B解密。用Java编写界面。 首先A用DES对选定文件加密,用hash函数对明文提取hash值,RSA对hash值加密, 然后B对加密的文件解密,对A的s值解密,比较两个值

    加密算法DES 3DES MD5 RSA算法大全

    本文将详细介绍四种常见的加密算法:DES、3DES、MD5和RSA,这些算法在Java编程语言中得到了广泛应用。 首先,我们来了解DES(Data Encryption Standard),这是一种对称加密算法,由IBM在1970年代开发并被美国国家...

    java仿MD5格式的DES加解密源码

    使用仿MD5格式的DES加密算法对明文进行加密,生成密文。 实现DES解密算法:在decrypt()方法中,同样使用javax.crypto库中的Cipher类和相关方法实现了DES解密算法。使用仿MD5格式的DES解密算法对密文进行解密,还原为...

    java-des加密解密程序

    java-des加密解密程序,基于java编写的des,3des加密程序,包括MAC校验,MD5校验等

Global site tag (gtag.js) - Google Analytics