`
jiasongmao
  • 浏览: 670709 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

des加密解密实体类

阅读更多
/** 
 * DES加密解密类.
 */
public class DESUtility {
    /** 加密、解密key. */
    private static final String PASSWORD_CRYPT_KEY = "kEHrDooxWHCWtfeSxvDvgqZq";

    /** 加密算法,可用 DES,DESede,Blowfish. */
    private final static String ALGORITHM = "DES";
    
    /** 
     * 对数据进行DES加密.
     * @param data 待进行DES加密的数据
     * @return 返回经过DES加密后的数据
     * @throws Exception
     */
    public final static String decrypt(String data) throws Exception {
        return new String(decrypt(hex2byte(data.getBytes()),
                PASSWORD_CRYPT_KEY.getBytes()));
    }

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

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

    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 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();
    }
}
分享到:
评论

相关推荐

    文档加密解密_数字证书_密钥生成

    本文将深入探讨“文档加密解密”、“数字证书”以及“密钥生成”这三个关键知识点,并结合提供的“javaHomework”文件,来解析如何在Java环境中实现这些功能。 首先,文档加密解密是一种保护敏感信息的方法,它通过...

    java 加密与解密艺术

    总的来说,这本书是Java开发人员学习和掌握加密解密技术的宝贵教程,无论你是初学者还是经验丰富的专业人士,都能从中受益匪浅。通过阅读这本书,你将能够构建更安全的Java应用程序,有效防止数据泄露,确保用户信息...

    Java加密与解密的艺术

    对称加密使用相同的密钥进行加密和解密,如DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)。这些算法速度快,适用于大量数据的加密,但在密钥分发和管理上存在挑战。 ...

    Java加密与解密的艺术配书源代码Java实用源码整理learns

    9. **JSymxx175.zip**:这个文件可能是书中源码的压缩包,可能包含了各种加密解密算法的实现,包括上述提到的对称加密、非对称加密、哈希计算等,是学习和实践Java加密解密技术的好材料。 在学习这部分内容时,你...

    加密、解密

    在ASP.NET中,可以使用内置的安全类,如`System.Security.Cryptography`命名空间下的类来实现加密解密。例如,可以使用`Aes`类进行AES加密,使用`RSA`类进行RSA加密。加密过程通常涉及以下步骤: 1. 选择合适的加密...

    ASP.NET加密源代码 三层

    例如,Aes类用于AES加密,Rsa类用于RSA加密,TripleDESCryptoServiceProvider类用于3DES加密。开发者可能使用这些类来实现加密和解密功能。 3. **三层架构的实现**: - **表示层**:这是用户与应用交互的部分,...

    Java加密扩展基础

    1. **加密与解密**:使用Cipher类进行数据的加密和解密。通过选择合适的加密算法,如AES,然后创建密钥,最后调用Cipher的`init`方法初始化,并使用`doFinal`方法执行加解密操作。 2. **密钥生成与管理**:...

    常用加密技术简介及电子邮件加密

    - 缺点:加密解密速度相对较慢。 #### 常见加密技术介绍 1. **ROT13**:一种简单的替换加密算法,主要用于文本加密,安全性较低。 2. **Crypt**:原始的UNIX加密程序,现已不再安全。 3. **DES(数据加密标准)**...

    socket 加密传送

    4. **EncriptEntity.java** - 这可能是定义了数据结构和加密相关的实体类,可能包含了加密算法的配置、密钥管理、以及加密和解密的接口。 在实际的加密Socket通信中,开发者需要关注以下几点: - **加密算法选择**...

    网络安全基础复习总结和复习

    网络安全基础知识点总结是一个涵盖网络安全基础知识的总结,涵盖了安全攻击的分类、网络安全的特征、对称加密技术、DES 加密算法、RC4 加密算法、公钥密码和消息认证等多个方面的知识点。 一、安全攻击的分类 安全...

    C#文件加密及其播放器(0515).rar

    在C#中,可以使用内置的加密类库来实现这一功能,比如System.Security.Cryptography命名空间下的各种加密算法,如AES(高级加密标准)、RSA(公钥加密算法)和DES(数据加密标准)等。 AES是一种块加密算法,适用于...

    MD5加密方法

    2. 加解密:这里没有提供具体的加密算法,但C#支持多种加密算法,如DES、AES等。解密同样需要知道所用的加密算法。 3. SHA1加密:SHA1是另一种哈希函数,与MD5类似但更安全。C#中的实现方式与MD5类似,只需将MD5...

    C#分享辅助类:SQLite数据库操作(SQLiteDao)

    5. **加密解密**:`EncryptionDES.cs`和`EncryptionHelper.cs`可能提供了数据加密和解密的功能,用于保护存储在数据库中的敏感信息。DES(Data Encryption Standard)是一种常用的对称加密算法,适用于小规模数据的...

    密码学基础与DES密码介绍.pptx

    可用性则意味着信息应能被授权实体在需要时访问。如果一个系统受到攻击导致无法正常工作,那么它的可用性就受到了影响。 密码学的发展经历了古代加密方法、古典密码(如置换密码和代替密码)以及近代密码三个阶段。...

    加密芯片api、私钥解码code、算法库lib、芯片固件demo

    “算法库lib”指的是包含各种加密算法实现的库,如哈希函数(MD5、SHA系列)、对称加密(DES、3DES、AES)、非对称加密(RSA、ECC)等。开发者可以引用这些库来快速集成加密功能,而无需从零开始编写所有代码。算...

    毕业论文jsp1977RSA算法.doc

    此外,还提到了扩展功能,如网络数据流的加密和解密,节点级别的加密解密,数据打包封装以实现安全的网络传输,以及局部文本的加密替换。 4. **密钥管理**:密钥的分配和传输必须安全,因为密钥的安全管理是整个...

    基于Java的加密库 JSDSI.zip

    对称加密使用相同的密钥进行加密和解密,适合大量数据的处理;而非对称加密使用一对公钥和私钥,公钥可公开,私钥需保密,适合身份验证和密钥交换。 2. **密钥管理**: JSDSI提供了密钥生成、存储和管理的机制。...

    Cryptography:实现各种类型的加密和解密密码的Java程序

    在"Cryptography-master"这个项目中,可能包含了以上提到的各种加密解密算法的Java实现,以及可能的测试案例。通过研究这些代码,开发者可以深入理解Java密码学的实践应用,并学习如何在自己的项目中集成这些安全...

    计算机网络安全4751 第三章.docx

    信息加密是确保数据安全传输的核心手段,它包括了明文、密文、密钥、加密算法和解密算法等基本概念。 1. 明文是未经过加密的原始信息,而密文则是加密后的结果。密钥是用于加密和解密的特殊数据,加密算法将明文...

    4.密码技术--wjf.rar

    对称加密是最古老的加密方法,如DES(Data Encryption Standard)和AES(Advanced Encryption Standard)。这种加密方式中,加密和解密使用的是同一把密钥,因此密钥的管理和分发成为安全性的关键。对称加密速度快,...

Global site tag (gtag.js) - Google Analytics