用JAVA实现的DES加密解密算法

package Encrypt;
import java.security.*;
import javax.crypto.*;
import sun.misc.*;
/**
    *   使用DES加密与解密,可对byte[],String类型进行加密与解密
    *   密文可使用String,byte[]存储.
    *   方法:
    *   void getKey(String   strKey)从strKey的字条生成一个Key
    *   String getEncString(String strMing)对strMing进行加密,返回String密文
    *   String getDesString(String strMi)对strMin进行解密,返回String明文
    *   byte[] getEncCode(byte[] byteS)byte[]型的加密
    *   byte[] getDesCode(byte[] byteD)byte[]型的解密
    */
public class Encrypt{
  private Key key;
  private byte[] byteMi = null;
  private byte[] byteMing = null;
  private String strMi= "";
  private String strM= "";
  //  根据参数生成KEY
  public void setKey(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密文输出
  public void setEncString(String strMing){
   BASE64Encoder base64en = new BASE64Encoder();
    try {
     this.byteMing = strMing.getBytes("UTF8");
      this.byteMi = this.getEncCode(this.byteMing);
      this.strMi = base64en.encode(this.byteMi);
     }
    catch(Exception e)
    {
     e.printStackTrace();
     }
   finally
     {

      this.byteMing = null;
      this.byteMi = null;
      }
  }
  //加密以byte[]明文输入,byte[]密文输出
  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;
  }
// 解密:以String密文输入,String明文输出
  public void setDesString(String strMi){
   BASE64Decoder base64De = new BASE64Decoder();
    try
    {
     this.byteMi = base64De.decodeBuffer(strMi);
      this.byteMing = this.getDesCode(byteMi);
      this.strM = new String(byteMing,"UTF8");
      }
    catch(Exception e)
     {
      e.printStackTrace();
      }
    finally
     {
      base64De = null;
      byteMing = null;
      byteMi = null;
      }  

  }
  // 解密以byte[]密文输入,以byte[]明文输出
 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;
  }
  //返回加密后的密文strMi
  public String getStrMi()
  {
   return strMi;
  }
  //返回解密后的明文
  public String getStrM()
  {
   return strM;
  }
 }  

用JAVA实现的DES加密解密算法

时间: 2024-11-07 10:10:01

用JAVA实现的DES加密解密算法的相关文章

java 实现 DES加密 解密算法

DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种:加密或解密.  DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果:如 Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果.在通信网络的两端,双方约定一致

javascript DES加密解密算法

原文:javascript DES加密解密算法 源代码下载地址:http://www.zuidaima.com/share/1550463672044544.htm javascript DES加密解密算法,java通过ScriptEngineManager调用的例子. 源码截图:

DES加密解密算法

DES加密解密算法 // 仿射变换加解密.cpp : 定义控制台应用程序的入口点. // #include <stdio.h> #include <conio.h> static char key[10], key_a[5], code[8], key_b[5], temp[10], key_aa[8], key_bb[8], l[4], r[4], l_a[4], r_a[4], V[8] = { 0, 1, 0, 1, 0, 1, 0, 1 }, b[8]; char Code

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

代码: 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 /*------------------------ 5 定义枚举型全局变量 6 ------------------------*/ 7 typedef enum 8 { 9 false = 0, 10 true = 1 11 } bool; 12 13 // 十六轮子密钥 14 static bool SubKey[16][48]=

android -------- DES加密解密算法

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来.需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来. DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法.DES加密算法

DES加密解密-&gt;java实现

DES加密解密涉及到的JAVA类 Cipher 此类为加密和解密提供密码功能.它构成了 Java Cryptographic Extension (JCE) 框架的核心. 为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将所请求转换 的名称传递给它.还可以指定提供者的名称(可选). 转换 是一个字符串,它描述为产生某种输出而在给定的输入上执行的操作(或一组操作).转换始终包括加密算法的名称(例如,DES),后面可能跟有一个反馈模式和填充方案. 转换具有以

php与java通用AES加密解密算法

php与java通用AES加密解密算法 AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法. php版代码如下: <?php class CryptAES { protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected

实现与JS相同的Des加解密算法【转】

Java代码 import java.util.ArrayList; import java.util.List; /** * DES加密/解密 * * @Copyright Copyright (c) 2015 * @author liuyazhuang * @see DESCore */ public class Des { public Des() { } public static void main(String[] args) { Des desObj = new Des(); St

java/php DES/CBC/PKCS5Padding加密解密算法实现过程

先看java代码 Java代码   public static String encrypt(String message, String key) throws Exception { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8")); SecretKeyFactory k