【Android工具类】比DES加密更安全的算法——3DES加密算法
发布时间:2020-05-24 21:28:44 所属栏目:Java 来源:互联网
导读:【Android工具类】比DES加密更安全的算法——3DES加密算法
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 转载请注明出处: 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));
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
