- 浏览: 1048408 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
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代码 复制代码 收藏代码
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.}
发表评论
-
20180222积累
2018-02-22 09:34 4781. mybatis如何通过接口查找对应的mapper. ... -
20180208积累
2018-02-08 10:28 465临时表与永久表相似,但临时表存储在 tempdb 中,当不 ... -
行业应用
2018-01-30 16:30 485git clone的时候用上面那个IP地址,下面栏中的不能 ... -
SQLite 数据库
2018-01-29 22:57 755android: SQLite创建数据 ... -
java里面获取map的key和value的方法
2018-02-01 11:29 2159获取map的key和value的方法分为两种形式: ma ... -
Eclipse中Maven WEB工程tomcat项目添加调试以及项目发布细节记录
2018-02-23 21:11 725一、建立一个maven WEB项目 1、file-&g ... -
错误:HttpServlet was not found on the Java
2018-02-23 21:12 382我们在用Eclipse进行Java web ... -
使用 java8 实现List到Array的转换
2018-02-23 21:13 2988开发中需要调用第三方的库,有些 API 的入参要求是 do ... -
Java8 利用Lambda处理List集合
2018-01-11 09:58 5630Java 8新增的Lambda表达式,我们可以很方便地并行操 ... -
java中string与json互相转化
2018-01-11 09:40 1076在Java中socket传输数据时,数据类型往往比较难选择。 ... -
JSON 数据格式
2018-01-11 09:37 474JSON(JavaScript Object Notatio ... -
java怎么读取json格式的数据
2018-01-11 09:46 1059java可以使用JSONObject和JSONArray来操作 ... -
Java8-如何将List转变为逗号分隔的字符串
2018-01-10 10:13 1988Converting a List to a String ... -
eclipse maven 打war包的两种方式
2018-02-23 21:25 703第一种:利用pom.xml文件打包。 右键pom.xml ... -
Annotation(三)——Spring注解开发
2018-02-28 09:21 428Spring框架的核心功能IoC(Inversion o ... -
Spring自定义注解
2018-02-28 09:32 594java注解:附在代码中的一些元信息,用于在编译、运行时起 ... -
Java项目
2018-01-08 10:56 0这两种解决办法已经能完全解决问题,不过值得注意的一点是,我 ... -
解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
2018-03-22 10:41 1130在Eclipse中建立好一个Maven项目后,如果Java ... -
Java @override报错的解决方法
2018-01-07 12:56 0有时候Java的Eclipse工程换一台电脑后编译总是@ove ... -
Java 8 配置Maven-javadoc-plugin
2018-01-07 09:07 1040在升级JDK至1.8之后,使用Maven-javadoc- ...
相关推荐
JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现JAVA 对称加密 实现
AES和RSA java实现
Java对称加密算法DES实例详解 Java对称加密算法是使用对称密钥进行加密和解密的加密算法,其加密和解密使用相同的密钥。Java中对称加密算法有多种,而DES(Data Encryption Standard)是其中一种古老的对称加密...
下面是一个简单的Java对称加密示例,使用AES算法: ```java import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; ...
本人总结了一些对称的加密算法,希望可以给一些朋友带来帮助!!
在Java中,我们可以使用JCE(Java Cryptography Extension)框架来实现对称加密。例如,使用DES算法,我们可以通过以下步骤进行操作: 1. 导入必要的包: ```java import javax.crypto.Cipher; import javax.crypto...
主要介绍了Java 对称加密使用DES / 3DES / AES 这三种算法分别实现的相关资料,这里提供了实例代码,需要的朋友可以参考下
本示例"Java-Js双向Des对称加密Demo"提供了在Java和JavaScript两个平台间实现DES加密解密的互操作性。下面将详细阐述DES加密解密的核心原理、Java和JavaScript的实现细节以及如何在两者之间进行兼容。 DES是一种块...
支持Java文件遇见的敏感字段的加密 包括对称和非对称加密
在Java中,常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,AES是一种广泛应用的块加密算法,支持128位、192位和256位的密钥长度,其加密...
非对称加密JAVA实现,实现对超长内容进行加密
在Java中,`java.security`包提供了实现非对称加密的接口和类,如`KeyPairGenerator`用于生成密钥对,`Cipher`用于加解密操作。 在上述的【压缩包子文件的文件名称列表】中,我们看到两个重要的库: 1. **bcprov-...
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 非对称 加密 算法,有疑问可以找我1038546502@qq.com
Java 实现非对称加密 非对称加密是一种加密技术,它使用一对不同的密钥:公钥(public key)和私钥(private key)。公钥用于加密,私钥用于解密。在 Java 中,可以使用 RSA 算法实现非对称加密。 RSA 算法是最...
Java中的非对称加密是一种安全性较高的加密技术,与对称加密相比,它的主要特点是使用一对公钥和私钥。在本非对称加密Demo中,我们重点探讨的是如何在Java环境中实现这一技术,并且涉及了秘钥文件的生成以及字符转换...
"Java实现的对称加密算法AES定义与用法详解" 对称加密算法AES是当前使用最多的加密算法之一,其主要特点是高级的、安全的、快速的和灵活的。下面我们将详细介绍Java实现的对称加密算法AES的定义、特点、用法及使用...