`
duyouhua1214
  • 浏览: 235943 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

3DES加密解密调用示例

    博客分类:
  • Java
阅读更多

在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) 加密*/

  import java.security.*;

  import javax.crypto.*;

  import javax.crypto.spec.SecretKeySpec;

  public class ThreeDes {

  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)));

  }

  }

来源:http://java.chinaitlab.com/advance/794851.html

分享到:
评论

相关推荐

    des加密解密_Des加密解密_DES加密_

    在给定的“des加密例程”中,可能包含了一个调用动态链接库(DLL)实现DES加密解密的示例代码。DLL是Windows操作系统中的一种共享库,可以被多个程序同时调用,节省内存资源并便于代码复用。这个示例可能涉及以下...

    java和javascript之间的DES加密解密

    3. **JavaScript实现DES加密解密**: JavaScript中没有内置的DES库,通常需要依赖第三方库,如`crypto-js`。这个库提供了DES加密解密的功能,使用方式类似于Java,先生成密钥,然后调用相应的加密或解密函数。 4. ...

    [J2SE]Java中3DES加密解密调用示例

    jce.jar security/US_export_policy.jar ... 以下是java中调用sun公司提供的3DES加密解密算法的样本代码: 代码如下:/*字符串 DESede(3DES) 加密*/ import java.security.*; import javax.crypto.*; import javax.c

    VB实现DES加密解密算法,vb加密和解密,VBA

    以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System.Security.Cryptography Public Class DESUtil Public Shared Function Encrypt(PlainText As String, Key As String)...

    3DES加密解密算法

    以下是关于3DES加密解密算法在Java中的实现细节: 首先,为了使用3DES,Java程序需要引入特定的JAR包,这些包通常位于`JAVA_HOME/jre/lib/`目录下,包括`jce.jar`、`US_export_policy.jar`、`local_policy.jar`以及...

    3DES加密解密java版+js版

    在Java和JavaScript中实现3DES加密和解密,主要涉及以下几个关键知识点: 1. **密钥生成**:3DES需要一个168位的密钥,但通常我们提供的是一个128位或更短的密钥。Java中的`javax.crypto.SecretKeyFactory`和`javax...

    C# DES加密解密

    下面是一个简单的C# DES加密解密的示例: ```csharp using System; using System.IO; using System.Security.Cryptography; public class DESExample { public static void Main() { byte[] key = Convert....

    3des加密解密

    本文将详细介绍如何在Java中实现3DES加密解密算法,并提供示例代码来帮助理解整个过程。 #### 二、基础知识 1. **DES**:DES是一种对称加密算法,使用56位密钥对数据进行加密。尽管DES曾经是广泛使用的加密标准,...

    Base64And3Des(C++3Des加密解密结合Base64加密解密).rar

    在这个项目中,"Base64And3Des(C++3Des加密解密结合Base64加密解密).rar" 提供了一个C++实现,用于结合3DES(Triple Data Encryption Standard)加密算法与Base64编码进行数据的加解密。下面我们将详细探讨3DES和...

    3des加密算法及调用示例

    调用方法(加密》解密》加密): unsigned char key1[] = "12345678"; unsigned char key2[] = "abcdefgh"; unsigned char key3[] = "~!@#$%^&"; //如果只需要两组密钥,则本组密钥可以和密钥1一样。 unsigned...

    PB可用md5加密、des加解密DLL,附PB9调用例程

    在"md5test.pbl"中,你可以找到PB的源代码,包括调用DLL的函数定义和实际加密解密的逻辑。"pbl"是PowerBuilder源代码库,"pbt"是项目文件,包含了关于源代码库的信息,如对象的组织和依赖关系。"pbw"是工作区文件,...

    DES加密_delphi_加解密_des_

    3. **源码实现**:描述中提到的"源码"是指用于在Delphi中实现DES加密和解密的具体代码。这些源码可能包括创建密钥、初始化加密和解密对象、执行加密和解密过程的函数或方法。 4. **加解密过程**:在Delphi中,DES...

    带界面的DES加密解密java源码

    在Java中实现DES加密解密,主要涉及以下知识点: 1. **Java Cryptography Architecture (JCA)**: Java提供了一套完整的加密框架JCA,允许开发者使用各种加密算法,包括DES。JCA包含了一些基本的加密接口,如`Cipher...

    des加密解密库 c++

    本资源提供了一个C++实现的DES加密解密库,特别适用于64位数据和中英文字符的加密解密操作。这个库设计为易于集成到项目中,只需将其文件添加到您的工程即可开始使用。 DES(数据加密标准)是1970年代由IBM开发的一...

    QT做的DES加解密实例

    3. **加密过程**:创建一个DES加密器对象,设置密钥,然后使用它来加密QByteArray形式的明文数据。加密过程通常包括初始化向量(IV),在QT中可能需要自定义实现。 4. **解密过程**:同样创建一个DES解密器对象,...

    Delphi7与C#实现Des加解密互通Demo,全网找遍只次一份

    标题中的“Delphi7与C#实现Des加解密互通Demo”指的是一个示例项目,该项目旨在演示如何在Delphi 7和C#之间进行DES加密和解密操作,确保两个环境下的数据一致性。全网找遍只此一份,表明这个示例可能比较罕见且具有...

    DES加密解密类

    总结来说,这个压缩包提供了一个关于在Java中使用DES加密解密的示例。通过阅读和理解这些源代码,开发者可以学习到如何在实际项目中应用DES,以及对称加密的基本原理和注意事项。同时,`DES.txt`可能提供了更深入的...

    c++ c#同时实现DES加密解密

    而文件"yxyDES2_MFC"可能是一个C++项目,使用MFC(Microsoft Foundation Classes)库来实现DES加密解密,可能涉及到对话框、控件交互等,同时也会调用OpenSSL库进行实际的加密解密操作。 总的来说,DES加密解密在...

    c++和c#同时实现DES加密解密算法

    在项目中,"Encrypt.cs"文件很可能是C#实现DES加密解密的代码示例,它可能包含了创建加密流并写入数据到加密后的文件的逻辑。另一方面,"yxyDES2_MFC"可能代表C++的MFC(Microsoft Foundation Classes)应用,用于...

Global site tag (gtag.js) - Google Analytics