【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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |