网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
J2SE Java中3DES加密解密调用示例
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/28
下载{$ArticleTitle}原创论文样式

  在Java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:

jce.jar
security/US_export_policy.jar
security/local_policy.jar
ext/sunjce_provider.jar

  Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中。对于Web应用,不需要把这些包加到WEB-INF/lib目录下。

  以下是java中调用sun公司提供的3DES加密解密算法的样本代码:

/*字符串DESede(3DES)加密*/
importjava.security.*;
importjavax.crypto.*;
importjavax.crypto.spec.SecretKeySpec;
publicclassThreeDes{  
  privatestaticfinalStringAlgorithm="DESede";//定义加密算法,可用DES,DESede,Blowfish    
  //keybyte为加密密钥,长度为24字节  
  //src为被加密的数据缓冲区(源)  
 publicstaticbyte[]encryptMode(byte[]keybyte,byte[]src){    
 try{      
    //生成密钥      
    SecretKeydeskey=newSecretKeySpec(keybyte,Algorithm);      
    //加密      
    Cipherc1=Cipher.getInstance(Algorithm);      
    c1.init(Cipher.ENCRYPT_MODE,deskey);      
    returnc1.doFinal(src);    
    } 
    catch(java.security.NoSuchAlgorithmExceptione1){      
      e1.printStackTrace();    
      } 
    catch(javax.crypto.NoSuchPaddingExceptione2){      
      e2.printStackTrace();    
      } 
    catch(java.lang.Exceptione3){      
      e3.printStackTrace();    
      }    
    returnnull;  
    }  
 //keybyte为加密密钥,长度为24字节  
 //src为加密后的缓冲区 
  publicstaticbyte[]decryptMode(byte[]keybyte,byte[]src){     
    try{      
      //生成密钥      
      SecretKeydeskey=newSecretKeySpec(keybyte,Algorithm);    
      //解密    
      Cipherc1=Cipher.getInstance(Algorithm);     
      c1.init(Cipher.DECRYPT_MODE,deskey);      
      returnc1.doFinal(src);    
      } 
    catch(java.security.NoSuchAlgorithmExceptione1){    
      e1.printStackTrace();    
      } 
    catch(javax.crypto.NoSuchPaddingExceptione2){    
      e2.printStackTrace();    
      } 
    catch(java.lang.Exceptione3){      
      e3.printStackTrace();    
    }    
    returnnull;  
    }  
  //转换成十六进制字符串  
publicstaticStringbyte2hex(byte[]b){   
  Stringhs=""<
SPAN>;    
  Stringstmp="";    
  for(intn=0;n<b.length;n++){      
    stmp=(java.lang.Integer.toHexString(b[n]&0XFF));     
    if(stmp.length()==1)hs=hs+"0"+stmp;     
    elsehs=hs+stmp;      
    if(n<b.length-1) hs=hs+":";    
    }    
  returnhs.toUpperCase();  
  }  
publicstaticvoidmain(String[]args){    
  //添加新安全算法,如果用JCE就要把它添加进去
  Security.addProvider(newcom.sun.crypto.provider.SunJCE());    
  finalbyte[]keyBytes={0x11,0x22,0x4F,0x58, 
      (byte)0x88,0x10,0x40,0x38,0x28,0x25,0x79,0x51, 
      (byte)0xCB,(byte)0xDD,0x55,0x66,0x77,0x29,0x74, 
      (byte)0x98,0x30,0x40,0x36,(byte)0xE2
      }; //24字节的密钥  
  StringszSrc="Thisisa3DEStest.测试";        
  System.out.println("加密前的字符串:"+szSrc);  
  byte[]encoded=encryptMode(keyBytes,szSrc.getBytes());        
  System.out.println("加密后的字符串:"+newString(encoded)); 
  byte[]srcBytes=decryptMode(keyBytes,encoded);  
  System.out.println("解密后的字符串:"+(newString(srcBytes)));  
  }
}

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号