随笔-57  评论-202  文章-17  trackbacks-0

      从JDK1.4开始,SUN提供了JCE包,可以实现多种加密算法。下面是我的一个用JCE进行DES加密解密的程序:

package sample;

import java.security.
*;
import javax.crypto.
*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author George Hill
 * @version 1.0
 
*/


public class Test {
  
  
// 加密使用的Key
  private SecretKey key;
  
  
// 加密算法,JCE可用DES,DESede和Blowfish
  private static final String algorithm = "DES";
  
  
public Test() throws NoSuchAlgorithmException {
    KeyGenerator generator 
= KeyGenerator.getInstance(algorithm);
    key 
= generator.generateKey();
  }

  
  
/**
   * 利用DES算法加密
   * @param s String 需要加密的字符串
   * @return String 加密后的字符串
   * @throws Exception
   
*/

  
public String encryptData(String s) throws Exception {
    Cipher c 
= Cipher.getInstance(algorithm);
    c.init(Cipher.ENCRYPT_MODE, key);

    
return new String(c.doFinal(s.getBytes()));
  }

  
  
/**
   * 利用DES算法解密
   * @param s String 需要解密的字符串
   * @return String 解密后的字符串
   * @throws Exception
   
*/

  
public String decryptData(String s) throws Exception {
    Cipher c 
= Cipher.getInstance(algorithm);
    c.init(Cipher.DECRYPT_MODE, key);

    
return new String(c.doFinal(s.getBytes()));
  }

  
  
/**
   * 测试程序
   * @param args String[]
   * @throws Exception
   
*/

  
public static void main(String[] args) throws Exception {
    String s 
= "Hello";
    Test test 
= new Test();
    String encrypt 
= test.encryptData(s);
    System.
out.println(encrypt);
    String decrypt 
= test.decryptData(encrypt);
    System.
out.println(decrypt);
  }

}



      在实际的使用中,往往需要对加密后的byte数组进行转换,可以自己实现转换,或者用一些第三方的API。
posted on 2005-05-18 11:55 小米 阅读(2596) 评论(4)  编辑  收藏 所属分类: Java

评论:
# re: 如何使用JCE的DES进行加密解密 2005-07-24 20:17 | lzcarl
高手,你好
我最近也在用jce写程序
可配置上出了问题
用KeyGenerator不管生成什么类型的key
都提示NoSuchAlgorithm
请问高手是怎么配置的啊
谢谢。  回复  更多评论
  
# re: 如何使用JCE的DES进行加密解密 2005-07-25 09:57 | 小米
高手不敢当。请问你设定的Algorithm是什么?我想错误信息应该提示的很清楚,你可以具体看看错误信息的意思,或者查查相关的文档。  回复  更多评论
  
# re: 如何使用JCE的DES进行加密解密 2005-07-25 15:24 | lzcarl
我设定的algorithm是des
昨天在jbuilder下还能用
换到eclipse下一样的设定方法就不行了
郁闷  回复  更多评论
  
# re: 如何使用JCE的DES进行加密解密 2005-07-25 16:13 | 小米
JBuilder和Eclipse下使用的JDK是否是一样的?你可以把你的源代码贴上来看看么?  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: