`

DES加密类

阅读更多

public class DES {
 private static final String PASSWORD_CRYPT_KEY = "khkhkhkhkh";
 private final static String DES = "DES";

 /**
  * 加密
  *
  * @param src
  *            数据源
  * @param key
  *            密钥,长度必须是8的倍数
  * @return 返回加密后的数据
  * @throws Exception
  */
 public static byte[] encrypt(byte[] src, byte[] key) throws Exception {
  // DES算法要求有一个可信任的随机数源
  SecureRandom sr = new SecureRandom();
  // 从原始密匙数据创建DESKeySpec对象
  DESKeySpec dks = new DESKeySpec(key);
  // 创建一个密匙工厂,然后用它把DESKeySpec转换成
  // 一个SecretKey对象
  SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
  SecretKey securekey = keyFactory.generateSecret(dks);
  // Cipher对象实际完成加密操作
  Cipher cipher = Cipher.getInstance(DES);
  // 用密匙初始化Cipher对象
  cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
  // 现在,获取数据并加密
  // 正式执行加密操作
  return cipher.doFinal(src);
 }

 /**
  * 解密
  *
  * @param src
  *            数据源
  * @param key
  *            密钥,长度必须是8的倍数
  * @return 返回解密后的原始数据
  * @throws Exception
  */
 public static byte[] decrypt(byte[] src, byte[] key) throws Exception {
  // DES算法要求有一个可信任的随机数源
  SecureRandom sr = new SecureRandom();
  // 从原始密匙数据创建一个DESKeySpec对象
  DESKeySpec dks = new DESKeySpec(key);
  // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
  // 一个SecretKey对象
  SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
  SecretKey securekey = keyFactory.generateSecret(dks);
  // Cipher对象实际完成解密操作
  Cipher cipher = Cipher.getInstance(DES);
  // 用密匙初始化Cipher对象
  cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
  // 现在,获取数据并解密
  // 正式执行解密操作
  return cipher.doFinal(src);
 }

 /**
  * 密码解密
  *
  * @param data
  * @return
  * @throws Exception
  */
 public final static String decrypt(String data) {
  try {
   return new String(decrypt(hex2byte(data.getBytes()),
     PASSWORD_CRYPT_KEY.getBytes()));
  } catch (Exception e) {
  }
  return null;
 }

 /**
  * 密码加密
  *
  * @param password
  * @return
  * @throws Exception
  */
 public final static String encrypt(String password) {
  try {
   return byte2hex(encrypt(password.getBytes(), PASSWORD_CRYPT_KEY
     .getBytes()));
  } catch (Exception e) {
  }
  return null;
 }

 /**
  * 二行制转字符串
  *
  * @param b
  * @return
  */
 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;
  }
  return hs.toUpperCase();
 }

 public static byte[] hex2byte(byte[] b) {
  if ((b.length % 2) != 0)
   throw new IllegalArgumentException("长度不是偶数");
  byte[] b2 = new byte[b.length / 2];
  for (int n = 0; n < b.length; n += 2) {
   String item = new String(b, n, 2);
   b2[n / 2] = (byte) Integer.parseInt(item, 16);
  }
  return b2;
 }

 public static void main(String[] args) {
  String pwd = "dasdfaaaaaa";
  System.out.println("测试数据=" + pwd);
  String data = encrypt(pwd);
  System.out.println("加密后的数据data=" + data);
  pwd = decrypt(data);
  System.out.println("解密后=" + pwd);
 }
}

分享到:
评论

相关推荐

    php des加密类

    这个DES加密类可能应用于数据库中的敏感数据存储、API之间的安全通信或者用户密码的存储(通常会结合哈希算法一起使用)。 请注意,实际的类实现会根据开发者的具体需求和编码风格有所不同,以上描述提供了一个...

    3DES 加密类 加密

    - **加密类**: 在编程中,用于封装加密算法的类,便于使用和管理加密操作。 在C++编程中,可以创建类来封装3DES操作,提供接口如`encrypt`和`decrypt`,这样可以使代码更加模块化和易于维护。同时,类还可以包含...

    自己写的C#DES加密类

    在C#编程语言中,我们可以自定义实现DES加密类来方便地进行数据加密和解密操作。以下是对这个"自己写的C# DES加密类"的详细解释。 首先,DES是一种块加密算法,它将数据分成64位的块进行处理。不过,由于第8位用于...

    DES加密算法实现的C++类

    C++是面向对象的编程语言,用于实现DES加密算法,可以创建一个类来封装加密和解密的过程。一个DES加密算法的C++类可能包含以下几个主要部分: 1. **密钥处理**:DES的密钥是64位,但其中有8位是奇偶校验位,实际...

    DES.rar_DES 置换_DES加密类_DES置换IP_des_des 类

    DES加密类,可以自定义key,可以更改IP置换表

    DES加密类,分装好了最完美的DES加密和解密方法,只需直接调用方法即可使用该加密类。

    DES加密类,分装好了最完美的DES加密和解密方法,只需直接调用方法即可使用该加密类。

    php 3des加密类

    关于安全方面的php代码类,采用的是3des加密技术,很好用,

    用delphi写的一个des的加密解密小程序,java写的des的一个类

    Java写的DES的一个类”表明了这个压缩包包含两个部分:一个是使用Delphi编程语言编写的用于执行DES(Data Encryption Standard)加密和解密的小程序,另一个是用Java实现的DES加密类。DES是一种广泛使用的对称加密...

    des加密工具类

    des加密工具类,des加密工具类,des加密工具类,des加密工具类,des加密工具类,

    DES加密类C#语言

    ### DES加密技术在C#中的应用 #### 一、引言 数据安全是现代信息技术领域的一个核心议题,尤其是在网络通信和大数据处理中,确保数据在传输和存储过程中的机密性和完整性至关重要。DES(Data Encryption Standard...

    3DES加密解密工具

    标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...

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

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

    C++ 代码实现DES加密解密源代码类

    在C++中实现DES加密解密,可以创建一个类来封装相关的操作,这样有利于代码的复用和维护。 描述中提到的"单倍双倍加密算法的实现",可能是指使用DES算法进行一次或两次加密的过程。单次DES加密使用同一个密钥对数据...

    3des加密工具类

    3des加密工具类

    3DES加密解密工具类

    3DES加密解密的全工具类,快速帮助新人进行3Des加密解密

    STM32上实现D3DES加密

    6. **执行D3DES**:首先用第一个密钥执行DES加密,然后用第二个密钥执行DES解密,最后再用第一个密钥进行一次DES加密。这个过程就是D3DES的核心。 7. **密文后处理**:加密完成后,对密文进行逆初始置换,得到最终...

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

    在VB中,可以使用.NET框架提供的System.Security.Cryptography命名空间下的DESCryptoServiceProvider类来实现DES加密和解密。 1. **DES加密过程**: - 创建DESCryptoServiceProvider对象,这是VB中实现DES算法的...

    Qt写的DES加密算法展示程序

    在Qt中,可以利用QCryptographicHash类和其他辅助类来实现DES加密。首先,你需要创建一个DES加密对象,设置密钥,并选择加密模式(如ECB、CBC等)。然后,对明文数据进行处理,将其转换为适当的数据格式。在进行加密...

    sql server 中进行des加密

    在C#中,可以使用`System.Security.Cryptography`命名空间下的`DESCryptoServiceProvider`类来实现DES加密。 1. **设置密钥和初始化向量(IV)**:在使用DES时,你需要一个密钥和一个初始化向量。密钥决定了加密和...

Global site tag (gtag.js) - Google Analytics