Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1324|回复: 0

JAVA中的常用加解密实例

[复制链接]

该用户从未签到

发表于 2011-10-10 17:06:29 | 显示全部楼层 |阅读模式
package com.lain.crypto;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/**
* 加密工具类
******************************************************
* @author linfan
* @date 2006-10-20
* @time 18:12:24
* @project wbe
* @package com.lain.crypto
* @file Cryptor.java
* @type Cryptor
******************************************************
*/
public class Cryptor {

//加密算法名称
public final static String AES = "AES";

public final static String Blowfish  = "Blowfish";

public final static String DES  = "DES";

public final static String DESede = "DESede";

public final static String RC2  = "RC2";

private KeyGenerator keygen; //KEY 产生器

private Cipher cipher;   //加解密器

private String type = Blowfish; //加密类型

public Cryptor(){
  
}

public Cryptor(String type){
  this.type = type;
}

public KeyGenerator getKeyGen() throws Exception{
  if(keygen == null){
   keygen = KeyGenerator.getInstance(getType());
  }
  return keygen;
}

public Cipher getCipher() throws Exception{
  
  if(cipher == null){
   cipher = Cipher.getInstance(getType());
  }
  return cipher;
}

public SecretKey getSecretKey() throws Exception{

  return getKeyGen().generateKey();
  
}

public SecretKey getSecretKey(byte[] encode){
  
  return new SecretKeySpec(encode, getType());
  
}

/**
  * 加密
  * @param enKey
  * @param data
  * @return 加密后的数据
  * @throws Exception
  * @return byte[]
  */
public byte[] enCrypto(SecretKey key ,byte[] data) throws Exception{
  Cipher enCipher = getCipher();
  enCipher.init(Cipher.ENCRYPT_MODE, key);
  return enCipher.doFinal(data);
}

/**
  * 解密
  * @param deKey
  * @param data
  * @return 解密后的数据
  * @throws Exception
  * @return byte[]
  */
public byte[] deCrypto(SecretKey key , byte[] data) throws Exception{
  Cipher enCipher = getCipher();
  enCipher.init(Cipher.DECRYPT_MODE, key);
  return enCipher.doFinal(data);
}



/**
  * 获得加密类型
  * @return TYPE
  * @return String
  */
public String getType() {
  return type;
}

/**
  * 设置加密类型
  * @param type
  * @return void
  */
public void setType(String type) {
  this.type = type;
}

/**
  * 测试试法
  * @param args
  * @throws Exception
  * @return void
  */

public static void main(String[] args) throws Exception {
  
  
  String source = "lain fan"; //加密前的数据
  System.out.println("source :"+source);
  
  //开始加密---->
  byte[] src = source.getBytes();
  Cryptor cryptor = new Cryptor();
  cryptor.setType(Cryptor.Blowfish );
  SecretKey key = cryptor.getSecretKey(new byte[]{0,1,2,3,4,5});
  //SecretKey key = cryptor.getSecretKey();
  byte[] en = cryptor.enCrypto(key,src);
  //加密完毕<-----
  
  //显示加密后的内容
  StringBuffer buff = new StringBuffer();
  for (int i = 0; i < en.length ; i++) {
   buff.append(String.valueOf(en + " "));
  }
  System.out.println("enCrypto :"+String.valueOf(buff.toString()));
  
  
  //开始解密---->
  byte[] de = cryptor.deCrypto(key,en);
  //解密完毕<----
  
  
  //显示解密后的内容
  buff = new StringBuffer();
  for (int i = 0; i < de.length ; i++) {
   buff.append(String.valueOf((char) de));
  }
  System.out.println("deCrypto :"+String.valueOf(buff.toString()));
}

}
回复

使用道具 举报

  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2011-11-1 13:13:22 | 显示全部楼层
    谢谢楼主分享啊。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-16 08:22 , Processed in 0.299046 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表