登 录..    [注 册]    忘记密码    注销登录
 
<
csdn.net
首 页 | 第二书店 | 论 坛 | 专 题 | 精 华 | SUN | IBM | 微 软 | 微 创 | 《程序员》 | 调 查 | 聊 天 | 黄 页
新 闻 | Donews | 文 档 | FAQ | 专 栏 | 人 才 | 培 训 | 移 动 | 人 邮 | 《开发高手》 | 搜 索 | 软 件 | 会 员
·[eWeek:Borland连丢大将] [CTO Blake Stone辞职] [讨论] ·关注2004年度计算机专业考试 ·Oracle欲以94亿美元收购仁科 ·测试驱动的开发系列(1) ·Jakarta Common Digester 应用 ·PHP4之真OO ·一次编写,随处运行 ·超越模板引擎 ·ERP实践:多级分类档案级联删除技术 ID号自动编码技术 ·金山《剑网》官方网站2度被黑 · 读者盛赞Inside VCL,李维一一作答 · 2004 Jolt大奖入围图书 · gzip-1.2.4程序分析 · 微软MVP新一届(2004.1)名单揭晓 · 社区之星联动读书计划 ·关注Ruby语言Matz关于技术的对话 blocks和Closure结构 · CSDN专题:网格计算 · CSDN最新推出RSS客户端订阅 · Dearbook新春货到付款免配送费 2007.3.27   

— 人才招聘 —
Samsung OpenTide...
北京北阳电子技术...
北京线线通科技开...
明日工作室(上海...
北京飞天诚信科技...
重庆海特科技发展...
北京色诺芬信息服...
武汉紫龙科技有限...
北京奥维在线软件...
广西怡海信息产业...
飞迈影视制作公司...
人民网(香港)有限...
北京世纪百合科技...
北京蓝天中交科技...
TOM互联网事业集团...
北京连邦软件学校...
— 热销商品 —
《Oracle9i实务管...
《过河卒》
《.NET系统架构与...
《JBuilder实用技...
《Java夜未眠》
— 培训信息 —
中国思科培训网(C...
UML软件工程组织(...
天盈隆网络技术培...
美国Softtech公司...
北大青鸟APTECH深...
北京中软总公司计...
维新计算机培训中...
— 图书信息 —
软件创富
Delphi 深度探索
C#精髓
Refactoring
The Java Program...
CSDN - 文档中心 - Java    
标题     简单加密/解密方法包装, 含encode(),decode(),md5()    steeven(原作)
关键字     JCE encode decode md5 crypt 加密 解密

package steeven;

/*
用途: 简单加密/解密方法包装
作者: steeven@kali.com.cn
日期: 12/05/2001
感谢: http://www-900.ibm.com/developerWorks/java/l-security/index.shtml

说明:
This Class need JCE, download here:
http://java.sun.com/security/index.html

*/

import java.security.*;
import javax.crypto.*;
public class Crypt {

  private static String Algorithm="DES"; //定义 加密算法,可用 DES,DESede,Blowfish

  static boolean debug = false;

  static{
    Security.addProvider(new com.sun.crypto.provider.SunJCE());
  }

  //生成密钥, 注意此步骤时间比较长
  public static byte[] getKey() throws Exception{
    KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
    SecretKey deskey = keygen.generateKey();
    if (debug)
      System.out.println("生成密钥:"+byte2hex(deskey.getEncoded()));
    return deskey.getEncoded();
  }

  //加密
  public static byte[] encode(byte[] input,byte[] key) throws Exception{
    SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm);
    if (debug){
      System.out.println("加密前的二进串:"+byte2hex(input));
      System.out.println("加密前的字符串:"+new String(input));
    }
    Cipher c1 = Cipher.getInstance(Algorithm);
    c1.init(Cipher.ENCRYPT_MODE,deskey);
    byte[] cipherByte=c1.doFinal(input);
    if (debug)
      System.out.println("加密后的二进串:"+byte2hex(cipherByte));
    return cipherByte;
  }

  //解密
  public static byte[] decode(byte[] input,byte[] key) throws Exception{
    SecretKey deskey = new javax.crypto.spec.SecretKeySpec(key,Algorithm);
    if (debug)
      System.out.println("解密前的信息:"+byte2hex(input));
    Cipher c1 = Cipher.getInstance(Algorithm);
    c1.init(Cipher.DECRYPT_MODE,deskey);
    byte[] clearByte=c1.doFinal(input);
    if (debug){
      System.out.println("解密后的二进串:"+byte2hex(clearByte));
      System.out.println("解密后的字符串:"+(new String(clearByte)));
    }
    return clearByte;
  }

  //md5()信息摘要, 不可逆
  public static byte[] md5(byte[] input) throws Exception{
    java.security.MessageDigest alg=java.security.MessageDigest.getInstance("MD5"); //or "SHA-1"
    if (debug){
      System.out.println("摘要前的二进串:"+byte2hex(input));
      System.out.println("摘要前的字符串:"+new String(input));
    }
    alg.update(input);
    byte[] digest = alg.digest();
    if (debug)
      System.out.println("摘要后的二进串:"+byte2hex(digest));
    return digest;
  }

  //字节码转换成16进制字符串
  public static String byte2hex(byte[] b) {
    String hs="";
    String stmp="";
    for (int n=0;n<b.length;n++){
      stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
      if (stmp.length()==1)
        hs=hs+"0"+stmp;
      else hs=hs+stmp;
        if (n<b.length-1)  hs=hs+":";
      }
    return hs.toUpperCase();
  }

  public static void main(String[] args) throws Exception{
    debug = true;
//    byte[] key = getKey();
    byte[] key = "好好学习".getBytes();
    decode(encode("测试加密".getBytes(),key),key);
    md5("测试加密".getBytes());
  }
}



作者相关文章:
  • 在虚拟主机环境下备份数据库并且导出到EXCEL(原作)
  • 下一代的B/S开发框架--Echo 教程(9)(原作)
  • 下一代的B/S开发框架--Echo 教程(8)(原作)


  • 对该文的评论 人气:2755


    发表评论
    你还没有登录:昵称: 密码: 免费注册   评论:
        
      


    网站简介 - 广告服务 - 网站地图 - 帮助信息 - 联系方式 - English
    百联美达美公司 版权所有 京ICP证020026号
    Copyright ? CSDN.net, Inc. All rights reserved