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

DES加密和解密的方法

阅读更多

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

import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;

import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;


/**
 * 使用DES加密和解密的方法
 */
public class CryptoTools {

    private final byte[] DESkey = new byte[]{58, 21, 93, -100, 78, 4, -38, 32, 15, -89, 44, 90, 26, -6, -101, -112, 2, 94, 18, -52, 119, 35, -72, -69};// 设置密钥,略去
    //    private final byte[] DESIV = new byte[]{-121, 39, -10, -113, 36, 99, -89, 3, 42, 8, 62, 83, -72, 4, -47, 43, -111, 39, 112, 58, -83, 10, 41, -44};// 设置向量,略去
    private final byte[] DESIV = new byte[]{58, 21, 93, 93, 93, 93, 93, 93};// 设置密钥,略去

    private AlgorithmParameterSpec iv = null;// 加密算法的参数接口,IvParameterSpec是它的一个实现
    private Key key = null;

    public CryptoTools() throws Exception {
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 获得密钥工厂
        // 设置密钥参数,得到密钥对象
        key = keyFactory.generateSecret(new DESKeySpec(DESkey));// 得到密钥对象
        iv = new IvParameterSpec(DESIV);// 设置向量
    }

    public String encode(String data) throws Exception {
        Cipher enCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");// 得到加密对象Cipher
        enCipher.init(Cipher.ENCRYPT_MODE, key, iv);// 设置工作模式为加密模式,给出密钥和向量
        byte[] pasByte = enCipher.doFinal(data.getBytes("utf-8"));
        BASE64Encoder base64Encoder = new BASE64Encoder();
        return base64Encoder.encode(pasByte);
    }

    public String decode(String data) throws Exception {
        Cipher deCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
        deCipher.init(Cipher.DECRYPT_MODE, key, iv);
        BASE64Decoder base64Decoder = new BASE64Decoder();

        byte[] pasByte = deCipher.doFinal(base64Decoder.decodeBuffer(data));

        return new String(pasByte, "UTF-8");
    }

    public static void main(String[] args) {
        try {
            String test = "a1";
            CryptoTools des = new CryptoTools();//自定义密钥
            System.out.println("加密前的字符:" + test);
            System.out.println("加密后的字符:" + des.encode(test));
            System.out.println("解密后的字符:" + des.decode(des.encode(test)));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


分享到:
评论

相关推荐

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

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

    DES加密和解密

    C#编写的DES加密和解密方法,可直接调用使用,有需要的朋友可以下载使用!

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

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

    3DES加密解密工具

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

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

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

    DES加密 解密 方法 MFC

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

    DES/3DES加密解密工具

    对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密

    java和javascript之间的DES加密解密

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

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

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

    DES加密和解密.zip

    java写的关于DES加密和解密工具,可以对字符串进行加密和解密操作

    3DES加密解密

    描述中提到的"加出来和你文档上的不一样我负责"可能是指提供的代码实现与文档中描述的3DES加密解密方法可能存在差异,但开发者对此负责,意味着他们对代码的正确性和可靠性有信心。"DES3encrypt"和"DES3decrypt"是...

    用 MFC 实现 DES 加密解密算法

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

    3DES加密解密工具类

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

    DES加密/解密

    使用java技术编写的Des加密/解密,的工具类,已亲测可完全正确使用,无bug

    DES加密解密一套JAVA&IOS

    本资源"DES加密解密一套JAVA&IOS"提供了一套跨平台的解决方案,允许JAVA和iOS应用之间进行互操作性的加密和解密操作。 在JAVA平台上,DES加密和解密通常通过Java的`javax.crypto`包来实现。这个包提供了`Cipher`类...

    C# 用DES 加密和解密字符串

    4. **创建内存流和加密解密缓冲区**:创建`MemoryStream`对象用于存储加密或解密后的数据,以及`CryptoStream`对象,它将数据流通过加密或解密处理。 5. **执行加密或解密操作**:对于加密,将明文写入加密流;对于...

    DES加密_delphi_加解密_des_

    在Delphi编程环境中,实现DES加密和解密是一项常见的任务,特别是在处理敏感信息时。 标题"DES加密_delphi_加解密_des_"所涉及的核心知识点是: 1. **DES算法**:DES是一种64位块密码,使用56位的密钥进行加密。它...

    DES加密 java与.net可以相互加密解密两种方法

    本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax.crypto`包中的`Cipher`、`KeyGenerator`和`SecretKey`类。 - 创建`...

    DES64加密解密工具包

    DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密解密工具包DES64加密...

    des加密解密工具

    在描述中提到的"DES加密解密工具"是一款专用于执行DES加密和解密操作的应用程序。这款工具的优点在于用户可以本地运行,避免了在线加解密可能带来的密钥泄露风险,确保了数据安全性。用户只需要输入相应的密钥和待...

Global site tag (gtag.js) - Google Analytics