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

java的对称加密

阅读更多
DES (Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64 位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密





实例:



Java代码 复制代码 收藏代码
1.package cn.tzz.java.crypto.des; 
2. 
3.import java.security.Key; 
4.import java.security.SecureRandom; 
5. 
6.import javax.crypto.Cipher; 
7.import javax.crypto.KeyGenerator; 
8.import javax.crypto.SecretKey; 
9.import javax.crypto.SecretKeyFactory; 
10.import javax.crypto.spec.DESKeySpec; 
11.import javax.crypto.spec.SecretKeySpec; 
12. 
13.import org.junit.Test; 
14. 
15. 
16.import sun.misc.BASE64Decoder; 
17.import sun.misc.BASE64Encoder; 
18. 
19. 
20.public class DESUtil { 
21. 
22.    public String ALGORITHM = "DES"; 
23.     
24.    public String encryptBASE64(byte[] key) {   
25.        return (new BASE64Encoder()).encodeBuffer(key);   
26.    } 
27.     
28.    public byte[] decryptBASE64(String key) {   
29.        try { 
30.            return new BASE64Decoder().decodeBuffer(key); 
31.        } catch (Exception e) { 
32.            e.printStackTrace(); 
33.        } 
34.        return null; 
35.    } 
36. 
37.    /** 生成密钥串 */ 
38.    public String initKey(String seed) { 
39.        String key = null; 
40.        try { 
41.            SecureRandom secureRandom = null; 
42.            secureRandom = new SecureRandom(decryptBASE64(seed)); 
43.            KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM); 
44.            kg.init(secureRandom); 
45.            SecretKey secretKey = kg.generateKey(); 
46.            key = encryptBASE64(secretKey.getEncoded()); 
47.        } catch (Exception e) { 
48.            e.printStackTrace(); 
49.        } 
50.        return key; 
51.    } 
52. 
53.    /** 创建密钥对象 */ 
54.    public Key createKey(byte[] key) { 
55.        SecretKey secretKey = null; 
56.        try { 
57.            DESKeySpec dks = new DESKeySpec(key); 
58.            SecretKeyFactory keyFactory = SecretKeyFactory 
59.                    .getInstance(ALGORITHM); 
60.            secretKey = keyFactory.generateSecret(dks); 
61.            // 当使用其他对称加密算法时,如AES、Blowfish等算法时,用下述代码替换上述三行代码 
62.            // secretKey = new SecretKeySpec(key, ALGORITHM); 
63.        } catch (Exception e) { 
64.            e.printStackTrace(); 
65.        } 
66.        return secretKey; 
67.    } 
68. 
69.    /** 加密 */ 
70.    public byte[] encrypt(byte[] data, Key key) { 
71.        byte[] cipherByte = null;// 定义要生成的密文 
72.        try { 
73.            Cipher cipher = Cipher.getInstance(ALGORITHM); 
74.            SecureRandom sr = new SecureRandom();// 加密随机数生成器 (可以不写) 
75.            cipher.init(Cipher.ENCRYPT_MODE, key, sr); 
76.            cipherByte = cipher.doFinal(data); 
77.        } catch (Exception e) { 
78.            e.printStackTrace(); 
79.        } 
80.        return cipherByte; 
81.    } 
82. 
83.    /** 解密 */ 
84.    public byte[] decrypt(byte[] data, Key key) { 
85.        byte[] cipherByte = null;// 定义要生成的密文 
86.        try { 
87.            Cipher cipher = Cipher.getInstance(ALGORITHM); 
88.            SecureRandom sr = new SecureRandom();// 加密随机数生成器 (可以不写) 
89.            cipher.init(Cipher.DECRYPT_MODE, key, sr); 
90.            cipherByte = cipher.doFinal(data); 
91.        } catch (Exception e) { 
92.            e.printStackTrace(); 
93.        } 
94.        return cipherByte; 
95.    } 
96.     
97.    @Test 
98.    public void testDes() { 
99.        String content = "中文123456"; 
100.        String keyStr = initKey("QWE!@#123qwe123");; 
101.        System.out.println("原文:" + content); 
102.        System.out.println("密钥:" + keyStr); 
103.        Key key = createKey(decryptBASE64(keyStr)); 
104.        byte[] encryptByte = encrypt(content.getBytes(), key); 
105.        String encryptStr = encryptBASE64(encryptByte); 
106.        System.out.println("加密后:" + encryptStr); 
107.        byte[] decryptByte = decrypt(decryptBASE64(encryptStr), key); 
108.        String outputStr = new String(decryptByte); 
109.        System.out.println("解密后:" + outputStr); 
110.    } 
111.} 
分享到:
评论

相关推荐

    JAVA 对称加密 实现

    JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现

    java对称加密和非对称加密

    AES和RSA java实现

    Java对称加密算法DES实例详解

    Java对称加密算法DES实例详解 Java对称加密算法是使用对称密钥进行加密和解密的加密算法,其加密和解密使用相同的密钥。Java中对称加密算法有多种,而DES(Data Encryption Standard)是其中一种古老的对称加密...

    Java密码学对称加密Demo

    下面是一个简单的Java对称加密示例,使用AES算法: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; ...

    java对称加密算法总结

    本人总结了一些对称的加密算法,希望可以给一些朋友带来帮助!!

    对称加密适用java和net

    在Java中,我们可以使用JCE(Java Cryptography Extension)框架来实现对称加密。例如,使用DES算法,我们可以通过以下步骤进行操作: 1. 导入必要的包: ```java import javax.crypto.Cipher; import javax.crypto...

    Java 对称加密几种算法分别实现

    主要介绍了Java 对称加密使用DES / 3DES / AES 这三种算法分别实现的相关资料,这里提供了实例代码,需要的朋友可以参考下

    Java-Js双向Des对称加密Demo

    本示例"Java-Js双向Des对称加密Demo"提供了在Java和JavaScript两个平台间实现DES加密解密的互操作性。下面将详细阐述DES加密解密的核心原理、Java和JavaScript的实现细节以及如何在两者之间进行兼容。 DES是一种块...

    Java对称和非对称加密的Java文件

    支持Java文件遇见的敏感字段的加密 包括对称和非对称加密

    java编写的加密解密工具,有对称加密和非对称加密

    在Java中,常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,AES是一种广泛应用的块加密算法,支持128位、192位和256位的密钥长度,其加密...

    非对称加密JAVA实现

    非对称加密JAVA实现,实现对超长内容进行加密

    对称加密 非对称加密 需要的jar包

    在Java中,`java.security`包提供了实现非对称加密的接口和类,如`KeyPairGenerator`用于生成密钥对,`Cipher`用于加解密操作。 在上述的【压缩包子文件的文件名称列表】中,我们看到两个重要的库: 1. **bcprov-...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    非对称加密和对称加密混合应用

    6.用对方的公钥对称密钥进行加密(加密密钥) 7.将密文(5)和加密密钥(6)一起发给对方 接收方: 1.用自己的私钥对加密密钥进行解密,得到对称密钥--也只有自己才能解密。 2.用对称密钥对密文进行解密,得到...

    Java非对称加密源码实例

    Java非对称加密技术是一种基于数学算法的安全加密方式,它主要使用两个密钥:公钥和私钥。这种加密方式的核心在于,公钥可以公开给任何人,用于加密数据;而私钥必须保密,用于解密数据。这样,即使数据在传输过程中...

    Java非对称加密算法

    这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com

    java实现非对称加密

    Java 实现非对称加密 非对称加密是一种加密技术,它使用一对不同的密钥:公钥(public key)和私钥(private key)。公钥用于加密,私钥用于解密。在 Java 中,可以使用 RSA 算法实现非对称加密。 RSA 算法是最...

    java非对称加密demo(秘钥文件\字符秘钥)

    Java中的非对称加密是一种安全性较高的加密技术,与对称加密相比,它的主要特点是使用一对公钥和私钥。在本非对称加密Demo中,我们重点探讨的是如何在Java环境中实现这一技术,并且涉及了秘钥文件的生成以及字符转换...

    Java实现的对称加密算法AES定义与用法详解

    "Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...

Global site tag (gtag.js) - Google Analytics