DES3加密算法

转载 2015年07月07日 17:07:36
import java.security.Security;

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

public class DES3 {
    
    private static final String Algorithm = "DESede"; // 定义 加密算法,可用

    // DES,DESede,Blowfish

    // keybyte为加密密钥,长度为24字节
    // src为被加密的数据缓冲区(源)
    public static byte[] encryptMode(byte[] keybyte, byte[] src) {
        try {
            // 生成密钥
            SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
            // 加密
            Cipher c1 = Cipher.getInstance(Algorithm);
            c1.init(Cipher.ENCRYPT_MODE, deskey);
            return c1.doFinal(src);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return null;
    }

    // keybyte为加密密钥,长度为24字节
    // src为加密后的缓冲区
    public static byte[] decryptMode(byte[] keybyte, byte[] src) {
        try {
            // 生成密钥
            SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);
            // 解密
            Cipher c1 = Cipher.getInstance(Algorithm);
            c1.init(Cipher.DECRYPT_MODE, deskey);
            return c1.doFinal(src);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return null;
    }

    // 转换成十六进制字符串
    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;
            if (n < b.length - 1)
                hs = hs + ":";
        }
        return hs.toUpperCase();
    }

    public static void main(String[] args) {

        // 添加新安全算法,如果用JCE就要把它添加进去
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        final byte[] keyBytes = { 0x11, 0x22, 0x4F, 0x58, (byte) 0x88, 0x10,
                0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD,
                0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,
                (byte) 0xE2 }; // 24字节的密钥

        String szSrc = "This is a 3DES test. 测试";
        System.out.println("加密前的字符串:" + szSrc);

        byte[] encoded = encryptMode(keyBytes, szSrc.getBytes());
        System.out.println("加密后的字符串:" + new String(encoded));

        byte[] srcBytes = decryptMode(keyBytes, encoded);
        System.out.println("解密后的字符串:" + (new String(srcBytes)));
    }
}

Android比DES加密更安全的算法——3DES加密算法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992     在前面的文章里面,我们讨论了DES算法,同时也明白了如何才能保证不同平台下的加密和解密结果的一...
  • jdsjlzx
  • jdsjlzx
  • 2015年01月04日 10:37
  • 4827

Android实现DES和3DES算法

本文实现的Android下的是DES和3DES算法,Java同样也适用。 DES算法如下: import javax.crypto.Cipher; import javax.crypto.Secret...
  • loongago
  • loongago
  • 2016年09月01日 08:34
  • 1825

js前端3des加密 后台java解密

import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import java...
  • u010081710
  • u010081710
  • 2015年08月10日 14:38
  • 9187

Delphi Des3加密算法

  • 2013年04月18日 13:58
  • 20KB
  • 下载

3des加密算法

  • 2016年04月14日 10:29
  • 1.73MB
  • 下载

3DES加密算法C语言实现

  • 2013年09月26日 18:45
  • 159KB
  • 下载

wxh 《3DES加密算法源

  • 2007年05月23日 18:48
  • 9KB
  • 下载

Java 3des加密算法ECB模式

  • 2017年11月10日 09:54
  • 9KB
  • 下载

3des加密算法cpp程序

  • 2015年03月31日 22:38
  • 237KB
  • 下载

3DES 和 AES 加密算法的使用

3DES 介绍上篇文章已经介绍了 DES 算法的使用,并且也提到,在计算机计算速度特别快的今天,要破解 DES 加密过后的数据是完全有可能做到的,为什么呢?因为 DES 算法的密钥 也就64位,所有可...
  • Hwaphon
  • Hwaphon
  • 2016年08月12日 12:36
  • 3980
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DES3加密算法
举报原因:
原因补充:

(最多只允许输入30个字)