`
longgangbai
  • 浏览: 7340136 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

des加密 企业常用的算法加密

阅读更多

package com.wtfypm;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
public class DesEncrypt {
Key key;
/**
  * 根据参数生成KEY
  *
  * @param strKey
  */
public void getKey(String strKey) {
  try {
   KeyGenerator _generator = KeyGenerator.getInstance("DES");
   _generator.init(new SecureRandom(strKey.getBytes()));
   this.key = _generator.generateKey();
   _generator = null;
  } catch (Exception e) {
   e.printStackTrace();
  }
}
/**
  * 加密String明文输入,String密文输出
  *
  * @param strMing
  * @return
  */
public String getEncString(String strMing) {
  byte[] byteMi = null;
  byte[] byteMing = null;
  String strMi = "";
  try {
   return byte2hex(getEncCode(strMing.getBytes()));
   // byteMing = strMing.getBytes("UTF8");
   // byteMi = this.getEncCode(byteMing);
   // strMi = new String( byteMi,"UTF8");
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   byteMing = null;
   byteMi = null;
  }
  return strMi;
}
/**
  * 解密 以String密文输入,String明文输出
  *
  * @param strMi
  * @return
  */
public String getDesString(String strMi) {
  byte[] byteMing = null;
  byte[] byteMi = null;
  String strMing = "";
  try {
   return new String(getDesCode(hex2byte(strMi.getBytes())));
   // byteMing = this.getDesCode(byteMi);
   // strMing = new String(byteMing,"UTF8");
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   byteMing = null;
   byteMi = null;
  }
  return strMing;
}
/**
  * 加密以byte[]明文输入,byte[]密文输出
  *
  * @param byteS
  * @return
  */
private byte[] getEncCode(byte[] byteS) {
  byte[] byteFina = null;
  Cipher cipher;
  try {
   cipher = Cipher.getInstance("DES");
   cipher.init(Cipher.ENCRYPT_MODE, key);
   byteFina = cipher.doFinal(byteS);
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   cipher = null;
  }
  return byteFina;
}
/**
  * 解密以byte[]密文输入,以byte[]明文输出
  *
  * @param byteD
  * @return
  */
private byte[] getDesCode(byte[] byteD) {
  Cipher cipher;
  byte[] byteFina = null;
  try {
   cipher = Cipher.getInstance("DES");
   cipher.init(Cipher.DECRYPT_MODE, key);
   byteFina = cipher.doFinal(byteD);
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   cipher = null;
  }
  return byteFina;
}
/**
  * 二行制转字符串
  *
  * @param b
  * @return
  */
public static String byte2hex(byte[] b) { // 一个字节的数,
  // 转成16进制字符串
  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;
  for (int n = 0; n < b.length; n += 2) {
   String item = new String(b, n, 2);
   // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
   b2[n / 2] = (byte) Integer.parseInt(item, 16);
  }
  return b2;
}
public static void main(String[] args) {
  System.out.println("hello");
  DesEncrypt des = new DesEncrypt();// 实例化一个对像
  des.getKey("00000000");// 生成密匙
  String strEnc = des.getEncString("12345678");// 加密字符串,返回String的密文
  System.out.println(strEnc);
  String strDes = des.getDesString(strEnc);// 把String 类型的密文解密
  System.out.println(strDes);
 
}
}

分享到:
评论

相关推荐

    DES算法 加密算法解密算法

    DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...

    DES加密算法(c语言实现)

    总结来说,DES加密算法是一种重要的对称加密技术,虽然因为其相对较短的密钥长度(56位)而逐渐被更安全的算法如AES所取代,但它在密码学教育和理解加密原理方面仍具有重要价值。C语言实现的DES算法源码可以帮助我们...

    DES加密算法实验

    ### DES加密算法实验知识点 #### 一、实验背景与目的 **DES(Data Encryption Standard)加密算法**是一种经典的对称加密技术,在信息安全领域占据着重要地位。本实验旨在通过实践操作,加深对DES算法工作原理的...

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

    本篇文章将详细探讨如何在VB环境中实现DES加密和解密,以及相关的VBA(Visual Basic for Applications)应用。 首先,DES是一种块加密算法,它的基本工作原理是将明文数据分为64位的块,然后通过一系列复杂的数学...

    DES加密与解密算法

    DES加密与解密算法实现源代码,是我们上课时做的作业

    3des加密的C语言算法

    3des加密算法的C语言实现,很好很实用

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

    **Qt DES加密算法展示程序详解** Qt是一个跨平台的C++图形用户界面应用程序开发框架,它为开发者提供了丰富的工具和库,使得构建GUI应用变得容易。在这个“Qt写的DES加密算法展示程序”中,我们将深入探讨DES(Data...

    C语言实现DES算法DES加密算法实验报告.doc

    C语言实现DES算法DES加密算法实验报告.doc

    DES加密算法源码 DES加密算法源码

    DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码 DES加密算法源码DES加密...

    des.rar_DES加密算法C++_c++ des加密_des_des加密算法 C++_对称加密算法

    DES加密算法在当时因其高效性和安全性而被广泛应用,但随着计算能力的提升,它的安全性逐渐受到挑战,目前已被更强大的加密标准如AES(Advanced Encryption Standard)所取代。 在C++中实现DES加密算法,通常会涉及...

    DES加密算法—实现(C语言)

    在C语言中实现DES加密算法,你需要理解以下几个关键知识点: 1. **DES结构**:DES算法分为两个主要部分——初始置换(IP)和逆初始置换(IP^-1),以及16轮的Feistel网络。每轮包含子步骤如扩展置换(E-Box)、选择...

    Des.rar_DES c++_des算法_加密_加密算法_算法

    Des加密算法Des加密算法Des加密算法Des加密算法Des加密算法

    des加密算法

    DES(Data Encryption ...总结来说,DES加密算法是历史上重要且有影响力的加密技术,虽然现在已被更先进的算法所取代,但它在密码学的发展历程中起到了关键作用,并且对于理解和学习现代加密技术的基础至关重要。

    DES加密解密算法 C语言源代码

    这篇C语言源代码实现了DES加密解密算法,特别适合于资源有限的环境,如STM32或51单片机。STM32系列是基于ARM Cortex-M内核的微控制器,而51单片机则是早期广泛应用的8位微处理器。在这些平台上,由于内存(RAM)资源...

    DES加密算法C++实现

    在C++中实现DES加密算法,通常涉及到以下几个关键知识点: 1. **DES算法原理**:DES算法基于Feistel结构,通过16轮迭代变换将64位明文数据转化为64位密文。每一轮迭代包含一个子密钥生成过程和一个替换-置换过程。...

    c#编写关于AES与DES加密算法

    C#实现AES与DES加密算法 本资源提供了C#语言实现AES与DES加密算法的示例代码,包括加密和解密函数的实现。AES(Advanced Encryption Standard,高级加密标准)和DES(Data Encryption Standard,数据加密标准)都是...

    用 MFC 实现 DES 加密解密算法

    在实现DES加密解密的过程中,首先需要理解DES的基本步骤,包括初始置换、扩展置换、8轮Feistel网络、逆扩展置换和逆初始置换。在MFC环境中,这些步骤可以通过定义类和函数来实现。例如,可以创建一个名为`CDES`的类...

    DES加密算法应用

    本篇文章将深入探讨DES加密算法的应用及其在Java编程中的实现。 DES算法由IBM公司在1970年代初设计,后来被美国国家标准局采纳为数据加密标准。该算法基于Feistel结构,使用64位的密钥对64位的数据进行加密,实际...

    使用java自带des加密算法实现文件加密和字符串加密

    主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics