皮皮网

【负8的源码】【class源码解释】【源码分享主题】des加解密java源码_des解密 java

时间:2024-11-29 23:20:16 分类:百科 来源:wave指标源码

1.如何用Java进行3DES加密解密
2.用java实现des加密和解密
3.java des加密为什么和网站

des加解密java源码_des解密 java

如何用Java进行3DES加密解密

       è¿™é‡Œæ˜¯ä¾‹å­ï¼Œç›´æŽ¥æ‹¿æ¥ç”¨å°±å¯ä»¥äº†ã€‚

       package com.nnff.des;

       import java.security.Security;

       import javax.crypto.Cipher;

       import javax.crypto.SecretKey;

       import javax.crypto.spec.SecretKeySpec;

       /*字符串 DESede(3DES) 加密

        * ECB模式/使用PKCS7方式填充不足位,加解密s解负8的源码目前给的密钥是位

        * 3DES(即Triple DES)是DES向AES过渡的加密算法(年,NIST将3-DES指定为过渡的

        * 加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加

        * 密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的

        * 密钥,P代表明文,C代表密表,这样,

        * 3DES加密过程为:C=Ek3(Dk2(Ek1(P)))

        * 3DES解密过程为:P=Dk1((EK2(Dk3(C)))

        * */

       public class ThreeDes {

        /**

        * @param args在java中调用sun公司提供的3DES加密解密算法时,需要使

        * 用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:

        *jce.jar

        *security/US_export_policy.jar

        *security/local_policy.jar

        *ext/sunjce_provider.jar

        */

        private static final String Algorithm = "DESede"; //定义加密算法,可用 DES,DESede,Blowfish

        //keybyte为加密密钥,长度为字节

        //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) {

        // TODO: handle exception

        e1.printStackTrace();

        }catch(javax.crypto.NoSuchPaddingException e2){

        e2.printStackTrace();

        }catch(java.lang.Exception e3){

        e3.printStackTrace();

        }

        return null;

        }

        //keybyte为加密密钥,长度为字节

        //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) {

        // TODO: handle exception

        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) {

        // TODO Auto-generated method stub

        //添加新安全算法,如果用JCE就要把它添加进去

        Security.addProvider(new com.sun.crypto.provider.SunJCE());

        final byte[] keyBytes = { 0x, 0x, 0x4F, 0x,

        (byte)0x, 0x, 0x, 0x, 0x, 0x, 0x, 0x,

        (byte)0xCB,

        (byte)0xDD, 0x, 0x, 0x, 0x, 0x,

        (byte)0x, 0x, 0x, 0x,

        (byte)0xE2

        }; //字节的密钥

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

        }

       }

用java实现des加密和解密

       ä¸€ä¸ªç”¨DES来加密、解密的类

       /java/1/.html

       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;

       }

       æ¯”较长, 转了一部分.

java des加密为什么和网站

       JAVA实现

       åŠ å¯†

        代码有详细解释,不多废话。

        注意:DES加密和解密过程中,密钥长度都必须是8的倍数

       [java] view plain copy

       public byte[] desCrypto(byte[] datasource, String password) {

        try{

        SecureRandom random = new SecureRandom();

        DESKeySpec desKey = new DESKeySpec(password.getBytes());

        //创建一个密匙工厂,然后用它把DESKeySpec转换成

        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

        SecretKey securekey = keyFactory.generateSecret(desKey);

        //Cipher对象实际完成加密操作

        Cipher cipher = Cipher.getInstance("DES");

        //用密匙初始化Cipher对象

        cipher.init(Cipher.ENCRYPT_MODE, securekey, random);

        //现在,获取数据并加密

        //正式执行加密操作

        return cipher.doFinal(datasource);

        }catch(Throwable e){

        e.printStackTrace();

        }

        return null;

       }

       è§£å¯†

        代码有详细注释,不多废话

       [java] view plain copy

       private byte[] decrypt(byte[] src, String password) throws Exception {

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

        SecureRandom random = new SecureRandom();

        // 创建一个DESKeySpec对象

        DESKeySpec desKey = new DESKeySpec(password.getBytes());

        // 创建一个密匙工厂

        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

        // 将DESKeySpec对象转换成SecretKey对象

        SecretKey securekey = keyFactory.generateSecret(desKey);

        // Cipher对象实际完成解密操作

        Cipher cipher = Cipher.getInstance("DES");

        // 用密匙初始化Cipher对象

        cipher.init(Cipher.DECRYPT_MODE, securekey, random);

        // 真正开始解密操作

        return cipher.doFinal(src);

       }

       æµ‹è¯•åœºæ™¯

        例如,我们可以利用如上函数对字符串进行加密解密,也可以对文件进行加密解密,如:

       [java] view plain copy

       //待加密内容

       String str = "测试内容";

       //密码,长度要是8的倍数

       String password = "";

       byte[] result = DESCrypto.desCrypto(str.getBytes(),password);

       System.out.println("加密后内容为:"+new String(result));

       //直接将如上内容解密

       try {

        byte[] decryResult = des.decrypt(result, password);

        System.out.println("加密后内容为:"+new String(decryResult));

       } catch (Exception e1) {

        e1.printStackTrace();

       }

copyright © 2016 powered by 皮皮网   sitemap