3DES应用的一个例子

news/2024/7/3 13:35:47 标签: byte, algorithm, 加密, string, 解密, import

/*在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包:jce.jarsecurity/US_export_policy.jarsecurity/local_policy.jarext/sunjce_provider.jar
 Java运行时会自动加载这些包,因此对于带main函数的应用程序不需要设置到CLASSPATH环境变量中。对于WEB应用,不需要把这些包加到WEB-INF/lib目录下。
 以下是java中调用sun公司提供的3DES加密解密算法的样本代码:
 */
package com.aaa.aaa;

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

public class ThreeDES {
 private static final String Algorithm = "DESede"; // 定义 加密算法,可用

 // DES,DESede,Blowfish

 private static final byte[] keyBase = { 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个byte的密钥
 
 // keybyte加密密钥,长度为24字节
 // src为被加密的数据缓冲区(源)
 /**
  * 加密
  */
 public static byte[] encryptMode(byte[] src) {
  try {// 生成密钥
   SecretKey deskey = new SecretKeySpec(keyBase, 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[] src) {
  try { // 生成密钥
   SecretKey deskey = new SecretKeySpec(keyBase, 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(szSrc.getBytes());
  System.out.println("加密后的字符串:" + new String(encoded));
  byte[] srcBytes = decryptMode(encoded);
  System.out.println("解密后的字符串:" + (new String(srcBytes)));
 }

}


http://www.niftyadmin.cn/n/1140782.html

相关文章

CURSOR_SPACE_FOR_TIME

cursor_space_for_time: 说明: 在一个游标引用共享 SQL 区时, 确定将 SQL 区保留在共享池中还是从中按过期作废处理。 值范围: TRUE | FALSE 默认值: FALSE (过期作废) 如果设置为true引起共享SQL区被pinned在shared pool&#xff0c;这禁用LRU机制。常为0在v$librarycache.r…

librarycache和数据字典命中率

1.library cache&#xff1a;查看reloads,pins在v$librarycache中&#xff0c;应该小于0.01 2.data dictionary&#xff1a;查看gethits,gets在v$rowcache

skiplist

前几天在看Redis的时候&#xff0c;看到网上说&#xff0c;Redis采用的是 Skiplist 而不是红黑树&#xff0c;但当时就给我整懵了。 啥子东西叫Skiplist&#xff0c;一查&#xff0c;翻译还挺直白——跳表。看起来很高级啊&#xff0c;于是嗖嗖嗖马上查资料 0X 10 Skiplist的…

nomn

首先下载nmon及nmon analyser nmon用来采集信息&#xff0c;nmon analyser用来生成图表 nonm的使用命令为&#xff1a; ./nmon -f -s 10 -c 60 -f 表示生成的数据文件名中有时间; -s 10 表示每 10 秒采集一次数据; -c 60 表示采集 60 次&#xff0c;10*60600 秒; 执行命令之后…

QUERY_REWRITE_ INTEGRITY的设置

QUERY_REWRITE_ INTEGRITY的设置。QUERY_REWRITE_INTEGRITY参数有三个取值&#xff1a; STALE_TOLERATED表示即使细目表中的数据已经发生了变化&#xff0c;也仍然使用物化视图。 TRUSTED 表示物化视图未失效时才使用该视图。但是&#xff0c;查询改写可以使用信任关系&…

工作七年技术总结

1 定位fullgc方法&#xff0c;以现在的硬件一般单机tps基本在上千&#xff0c;如果tps降到几十&#xff0c;并且jstat —gcutil fullgc一直持续上升&#xff0c;表示有大对象频繁创建&#xff0c;需要分析具体哪个对象在频繁创建&#xff0c;先使用dump命令导出内存文件&#x…

注定不能成行的DEV2DEV之旅

本打算今天去北京&#xff0c;正好赶上明天的DEV2DEV&#xff0c;谁知道好事多磨啊&#xff0c;最后还是没有磨成。 先是听了一个同事的话&#xff0c;没有提前买票&#xff0c;这时就隐隐的感觉不对劲&#xff1b;老婆把漆都准备好了&#xff0c;正好这次去能拿回来&#xff…

OCP的意义(另自贺完全通过了9iocp的四科)

中午考完了最后一科&#xff0c;考之前总以为自己过了之后会表现的比较激动&#xff0c;谁知道表现的平静另我都感到吃惊&#xff0c;好像觉得是别人的事情一样。一直以来&#xff0c;考&#xff4f;&#xff43;&#xff50;的目的有两个&#xff0c;一个是对自己6年以来的&am…