当前位置: 移动技术网 > IT编程>开发语言>Java > Java实现的对称加密算法3DES定义与用法示例

Java实现的对称加密算法3DES定义与用法示例

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文实例讲述了java实现的对称加密算法3des定义与用法。分享给大家供大家参考,具体如下:

一 为什么出现3des

1、返回柯克霍夫原则
2、存在安全问题

二 3des(triple des或desede)好处

1、密钥长度增强
2、迭代次数提高

三 3des相关参数

四 3des代码实现

package com.imooc.security.des;
import java.security.key;
import java.security.securerandom;
import javax.crypto.cipher;
import javax.crypto.keygenerator;
import javax.crypto.secretkey;
import javax.crypto.secretkeyfactory;
import javax.crypto.spec.desedekeyspec;
import org.apache.commons.codec.binary.base64;
public class imooc3des {
 private static string src = "cakin24 security 3des";
 public static void main(string[] args) {
  jdk3des();
 }
 public static void jdk3des() {
  try {
   //生成key
   keygenerator keygenerator = keygenerator.getinstance("desede");
   //keygenerator.init(168);
   keygenerator.init(new securerandom());//默认长度
   secretkey secretkey = keygenerator.generatekey();
   byte[] byteskey = secretkey.getencoded();
   //key转换
   desedekeyspec desedekeyspec = new desedekeyspec(byteskey);
   secretkeyfactory factory = secretkeyfactory.getinstance("desede");
   key convertsecretkey = factory.generatesecret(desedekeyspec);
   //加密
   cipher cipher = cipher.getinstance("desede/ecb/pkcs5padding");
   cipher.init(cipher.encrypt_mode, convertsecretkey);
   byte[] result = cipher.dofinal(src.getbytes());
   system.out.println("jdk 3des encrypt : " + base64.encodebase64string(result));
   //解密
   cipher.init(cipher.decrypt_mode, convertsecretkey);
   result = cipher.dofinal(result);
   system.out.println("jdk 3des decrypt : " + new string(result));
  } catch (exception e) {
   e.printstacktrace();
  }
 }
}

五 实现效果

jdk 3des encrypt : 6t7a/rnardzsl+mtezvbfxwnnzr0yjbw
jdk 3des decrypt : cakin24 security 3des

注:这里引入了org.apache.commons.codec.binary.base64包,可点击此处。

ps:关于加密解密感兴趣的朋友还可以参考本站在线工具:

在线des加密/解密工具:

文字在线加密解密工具(包含aes、des、rc4等):

md5在线加密工具:

在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:

在线sha1/sha224/sha256/sha384/sha512加密工具:

更多关于java相关内容感兴趣的读者可查看本站专题:《java数学运算技巧总结》、《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网