3des 加密

加密:

http://1985wanggang.blog.163.com/blog/static/77638332010113141021965/

/*字符串 DESede(3DES) 加密*/
//注:百度代码识别BUG,代码中空格属全角。拷贝代码之后请自行修改。
import  java.security.Security;
import  javax.crypto.Cipher;
import  javax.crypto.SecretKey;
import  javax.crypto.spec.SecretKeySpec;
public   class  DES3 {
  private   static   final  String Algorithm =  "DESede" ;  // 定义 加密算法,可用
// DES,DESede,Blowfish
// keybyte为加密密钥,长度为24字节
  // src为被加密的数据缓冲区(源)
  public   static   byte [] encryptMode( byte [] keybyte,  byte [] src) {
  try  {
  // 生成密钥
 SecretKey deskey =  new  SecretKeySpec(keybyte, Algorithm);
  // 加密
 Cipher c1 = Cipher.getInstance(Algorithm);
 c1.init(Cipher.ENCRYPT_MODE, deskey);
  return  c1.doFinal(src);
 }  catch  (java.security.NoSuchAlgorithmException e1) {
 e1.printStackTrace();
 }  catch  (javax.crypto.NoSuchPaddingException e2) {
 e2.printStackTrace();
 }  catch  (java.lang.Exception e3) {
 e3.printStackTrace();
 }
  return   null ;
 }
// keybyte为加密密钥,长度为24字节
  // src为加密后的缓冲区
  public   static   byte [] decryptMode( byte [] keybyte,  byte [] src) {
  try  {
  // 生成密钥
 SecretKey deskey =  new  SecretKeySpec(keybyte, Algorithm);
  // 解密
 Cipher c1 = Cipher.getInstance(Algorithm);
 c1.init(Cipher.DECRYPT_MODE, deskey);
  return  c1.doFinal(src);
 }  catch  (java.security.NoSuchAlgorithmException e1) {
 e1.printStackTrace();
 }  catch  (javax.crypto.NoSuchPaddingException e2) {
 e2.printStackTrace();
 }  catch  (java.lang.Exception e3) {
 e3.printStackTrace();
 }
  return   null ;
 }
  // 转换成十六进制字符串
  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) {
  // 添加新安全算法,如果用JCE就要把它添加进去
 Security.addProvider( new  com.sun.crypto.provider.SunJCE());
  final   byte [] 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字节的密钥
 String szSrc =  "This is a 3DES test. 测试" ;
 System.out.println( "加密前的字符串:"  + szSrc);
  byte [] encoded = encryptMode(keyBytes, szSrc.getBytes());
 System.out.println( "加密后的字符串:"  +  new  String(encoded));
  byte [] srcBytes = decryptMode(keyBytes, encoded);
 System.out.println( "解密后的字符串:"  + ( new  String(srcBytes)));
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静山晚风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值