加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

【Android工具类】比DES加密更安全的算法——3DES加密算法

发布时间:2020-12-15 03:23:35 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 ? 转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 ? ? package com.qust; import java.io.UnsupportedEncodingException; import javax.cryp

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

? 转载请注明出处: http://blog.csdn.net/zhaokaiqiang1992 ? ?
    package com.qust;  
      
    import java.io.UnsupportedEncodingException;  
      
    import javax.crypto.Cipher;  
    import javax.crypto.SecretKey;  
    import javax.crypto.spec.SecretKeySpec;  
      
    /** 
     *  
     * @ClassName: com.qust.SecretUtils 
     * @Description: 3DES加密解密工具类 
     * @author zhaokaiqiang 
     * @date 2014-11-13 下午11:28:14 
     *  
     */  
    public class DES3Utils {  
      
        // 定义加密算法,DESede即3DES  
        private static final String Algorithm = "DESede";  
        // 加密密钥  
        private static final String PASSWORD_CRYPT_KEY = "zhaokaiqiang1992";  
      
        /** 
         * 加密方法 
         *  
         * @param src 
         *            源数据的字节数组 
         * @return 
         */  
        public static byte[] encryptMode(byte[] src) {  
            try {  
                // 生成密钥  
                SecretKey deskey = new SecretKeySpec(  
                        build3DesKey(PASSWORD_CRYPT_KEY),Algorithm);  
                // 实例化Cipher  
                Cipher cipher = Cipher.getInstance(Algorithm);  
                cipher.init(Cipher.ENCRYPT_MODE,deskey);  
                return cipher.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;  
        }  
      
        /** 
         * 解密函数 
         *  
         * @param src 
         *            密文的字节数组 
         * @return 
         */  
        public static byte[] decryptMode(byte[] src) {  
            try {  
                SecretKey deskey = new SecretKeySpec(  
                        build3DesKey(PASSWORD_CRYPT_KEY),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;  
        }  
      
        /** 
         * 根据字符串生成密钥24位的字节数组 
         *  
         * @param keyStr 
         * @return 
         * @throws UnsupportedEncodingException 
         */  
        public static byte[] build3DesKey(String keyStr)  
                throws UnsupportedEncodingException {  
            byte[] key = new byte[24];  
            byte[] temp = keyStr.getBytes("UTF-8");  
      
            if (key.length > temp.length) {  
                System.arraycopy(temp,key,temp.length);  
            } else {  
                System.arraycopy(temp,key.length);  
            }  
            return key;  
        }  
    }  

测试类的代码如下
    package com.qust;  
      
    public class Main {  
      
        public static void main(String[] args) {  
            String msg = "使用3DES对数据进行加密";  
            System.out.println("【加密前】:" + msg);  
      
            // 加密  
            byte[] secretArr = DES3Utils.encryptMode(msg.getBytes());  
            System.out.println("【加密后】:" + new String(secretArr));  
      
            // 解密  
            byte[] myMsgArr = DES3Utils.decryptMode(secretArr);  
            System.out.println("【解密后】:" + new String(myMsgArr));  
        }  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读