`
weitao1026
  • 浏览: 1062746 次
  • 性别: 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-Js双向Des对称加密Demo

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

    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对称和非对称加密的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