`
liuxinglanyue
  • 浏览: 557296 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

DES加密解密和MD5加密解密算法

阅读更多

DES加密解密 

import java.security.Key;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**  
 *   
 * 使用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 ThreeDES {   
    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 = "";   
        BASE64Encoder base64en = new BASE64Encoder();   
        try {   
            byteMing = strMing.getBytes("UTF8");   
            byteMi = this.getEncCode(byteMing);   
            strMi = base64en.encode(byteMi);   
        } catch (Exception e) {   
            e.printStackTrace();   
        } finally {   
            base64en = null;   
            byteMing = null;   
            byteMi = null;   
        }   
        return strMi;   
    }   
  
    /**  
     * 解密 以String密文输入,String明文输出  
     *   
     * @param strMi  
     * @return  
     */  
    public String getDesString(String strMi) {   
        BASE64Decoder base64De = new BASE64Decoder();   
        byte[] byteMing = null;   
        byte[] byteMi = null;   
        String strMing = "";   
        try {   
            byteMi = base64De.decodeBuffer(strMi);   
            byteMing = this.getDesCode(byteMi);   
            strMing = new String(byteMing, "UTF8");   
        } catch (Exception e) {   
            e.printStackTrace();   
        } finally {   
            base64De = null;   
            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;   
  
    }   
  
    public static void main(String[] args) {   
        ThreeDES des = new ThreeDES();// 实例化一个对像   
        des.getKey("daliantan0v0");// 生成密匙   
        
        System.out.println("=================对字符串加密==================================");
        String strEnc = des.getEncString("wuzhaohui");// 加密字符串,返回String的密文   
        System.out.println(strEnc);   
  
        String strDes = des.getDesString("/RubFP0okb6u6s2INMttNQ==");// 把String 类型的密文解密    
        System.out.println(strDes);   
        
        System.out.println("==================对字节数组加密=================================");
       /*
        byte[] getEncCode(byte[] byteS)byte[]型的加密 byte[] getDesCode(byte[]  
                                                                         * byteD)byte[]型的解密
                                                            */
                                                                         
    }   
  
} 

测试结果: 

 

=================对字符串加密==================================
/RubFP0okb6u6s2INMttNQ==
wuzhaohui
==================对字节数组加密=================================
 

MD5加密 

 

package MD5;
import java.security.MessageDigest;


public class MD5andKL {
 // MD5加码。32位
 public static String MD5Encode(String inStr) {
  MessageDigest md5 = null;
  try {
   md5 = MessageDigest.getInstance("MD5");
  } catch (Exception e) {
   System.out.println(e.toString());
   e.printStackTrace();
   return "";
  }
  char[] charArray = inStr.toCharArray();
  byte[] byteArray = new byte[charArray.length];

  for (int i = 0; i < charArray.length; i++)
   byteArray[i] = (byte) charArray[i];

  byte[] md5Bytes = md5.digest(byteArray);

  StringBuffer hexValue = new StringBuffer();

  for (int i = 0; i < md5Bytes.length; i++) {
   int val = ((int) md5Bytes[i]) & 0xff;
   if (val < 16)
    hexValue.append("0");
   hexValue.append(Integer.toHexString(val));
  }

  return hexValue.toString();
 }

 // 可逆的加密算法
 public static String KL(String inStr) {
  // String s = new String(inStr);
  char[] a = inStr.toCharArray();
  for (int i = 0; i < a.length; i++) {
   a[i] = (char) (a[i] ^ 't');
  }
  String s = new String(a);
  return s;
 }

 // 加密后解密
 public static String MD5DecCode(String inStr) {
  char[] a = inStr.toCharArray();
  for (int i = 0; i < a.length; i++) {
   a[i] = (char) (a[i] ^ 't');
  }
  String k = new String(a);
  return k;
 }
 
 // 测试主函数
 public static void main(String args[]) {
  String s = new String("a");
  System.out.println("原始:" + s);
  System.out.println("MD5后:" + MD5Encode(s));
  System.out.println("MD5后再加密:" + KL(MD5Encode(s)));
  System.out.println("解密为MD5后的:" + MD5DecCode(KL(MD5Encode(s))));
 }
}

 测试结果: 原始:a

MD5后:0cc175b9c0f1b6a831c399e269772661
MD5后再加密:DECAMDEBLGEGMMFBMCCFBBE
解密为MD5后的:0cc175b9c0f1b6a831c399e269772661
 

分享到:
评论

相关推荐

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

    3. 加密和解密操作是 DES 加密解密算法的核心,使用子密钥和加密解密算法来实现。 4. 基本操作是 DES 加密解密算法的基础,包括循环左移、IP 置换、扩展置换、选择函数 S 和异或操作。 DES 加密解密算法的 C 语言...

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

    这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....

    用 MFC 实现 DES 加密解密算法

    本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库实现DES(Data Encryption Standard)加密解密算法,以及如何支持文件的打开和保存操作。 DES是一种对称加密算法,由IBM在1970年代开发,并在1977年被...

    3DES加密解密工具

    压缩包内的“3des.exe”文件很可能是该3DES加密解密工具的可执行程序,用户可以通过运行这个程序来实现对数据的加密和解密。使用此类工具时,用户需要输入适当的密钥,并选择加密或解密模式。对于3DES,为了保证安全...

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

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

    DES算法 加密算法解密算法

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

    DES加密解密MD5加密

    在Windows Forms(Winform)环境中,我们可以创建一个简单的应用程序来实现DES加密和MD5加密的功能。DEncrypt.cs.txt和DEncrypt.Designer.cs是C#项目中的两个文件,其中DEncrypt.cs是主要的代码文件,包含了加密解密...

    matlab实现DES加密解密算法

    加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密

    VC++ DES 加密解密算法

    **VC++ DES 加密解密算法** DES(Data Encryption Standard,数据加密标准)是一种广泛使用的对称加密算法,由IBM公司在1970年代初设计,并在1977年由美国国家标准局(NIST)采纳为标准。它基于Feistel网络结构,...

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

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

    java和javascript之间的DES加密解密

    Java和JavaScript之间的DES加密解密是信息安全领域中的一个重要话题,主要涉及到数据的保护和通信的安全。DES(Data Encryption Standard)是一种古老的对称加密算法,尽管它在安全性上已不被视为最佳选择,但在某些...

    3DES加密解密算法

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

    3DES加密解密工具类

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

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

    通过分析"md5test.pbl"中的代码,你可以看到如何在PB中导入和使用DLL,以及如何传递参数进行加密解密操作。通常,这会涉及到声明外部函数,指定DLL、函数名、参数类型和返回值类型。然后在代码中调用这些函数,处理...

    DES加密 解密 方法 MFC

    DES加密 解密 方法: DESr DESw 支持3DES加密 解密 类中利用函数重载的方式 实现两种加密方式 加密后为16进制字符串 使用方法: 实例化一个对象 然后就可以随便用了。 如 DES加密 解密 CString sd,sd2; yxyDES2 ...

    DES加密解密算法包含txt文件加密,分组加密

    在描述中提到的C++实现的DES加密解密算法,主要是针对TXT文本文件进行操作的。TXT文件是一种常见的文本格式,通常用于存储纯文本信息。DES算法在处理这种文件时,会将文件内容视为二进制数据流,然后按照64位的块...

    DES加密解密(c++实现)

    DES加密解密(c++实现)

    DES加密解密实验报告

    DES加密解密实验是对密码学基础知识的重要实践,通过这个实验,学生可以深入理解对称加密的工作原理,同时认识到DES在现代密码学中的局限性,如密钥长度较短和存在弱密钥等问题,这为后续学习更安全的加密算法如AES...

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

    DES 加密解密算法的 C 语言实现 本文档介绍了 DES 加密解密算法的 C 语言实现,提供了完整的源代码,能够加密字符串或者文件,已经通过测试使用。DES 加密算法是一种对称加密算法,既可用于加密又可用于解密。 一...

    DES文件加密解密算法实现

    在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...

Global site tag (gtag.js) - Google Analytics