对称密码的概念

  • 加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆
  • 加解密通信模型

  • 特点:算法公开、计算量小、加密速度快、加密效率高
  • 弱点:双方都使用同样密钥,安全性得不到保证

DES 算法的编程使用(密钥偏短(56位)、生命周期短)

package com.crypt.des;import com.crypt.ByteToHexUtil;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;/*** des加密* Created by zhangweixiang on 4/17/2016.*/
public class DESUtil {/*** 生成desckey* @param type* @return* @throws Exception*/public static byte[] generateKey(String type) throws Exception {KeyGenerator keyGenerator = KeyGenerator.getInstance(type);keyGenerator.init(56);SecretKey secretKey = keyGenerator.generateKey();return  secretKey.getEncoded();}/*** 通过指定的deskey加密* @param data 加密的数据* @param key 秘钥* @param type 加密方式* @return 加密信息* @throws Exception*/public static byte[] encrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.ENCRYPT_MODE,secretKey);return cipher.doFinal(data);}/*** des解密* @param data 需要解密的数据* @param key 解密秘钥* @param type 类型* @return 解密后的结果* @throws Exception*/public static byte[] decrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.DECRYPT_MODE,secretKey);return cipher.doFinal(data);}public static void main(String[] args) throws Exception {String data = "test desc";String type = "DES";// DES/ECB/PKCS5Paddingbyte[] key = DESUtil.generateKey(type);byte[] encData = DESUtil.encrypt(data.getBytes(),key,type);String encDataStr = ByteToHexUtil.bytesToHexString(encData);System.out.println(data+">>des encrypt>>"+encDataStr);byte[] decData = DESUtil.decrypt(encData,key,type);System.out.println(encDataStr+">>des decrypt>>"+new String(decData));}
}

3DES 算法的编程使用

将密钥长度增至112位或168位,通过增加迭代次数提高安全性

缺点:处理速度较慢、密钥计算时间较长、加密效率不高

package com.crypt.des;import com.crypt.ByteToHexUtil;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;/*** 3des加密* Created by zhangweixiang on 4/17/2016.*/
public class TripleDESUtils {/*** 生成3desckey* @param type* @return* @throws Exception*/public static byte[] generateKey(String type) throws Exception {KeyGenerator keyGenerator = KeyGenerator.getInstance(type);keyGenerator.init(112);//128 168SecretKey secretKey = keyGenerator.generateKey();return  secretKey.getEncoded();}/*** 通过指定的3deskey加密* @param data 加密的数据* @param key 秘钥* @param type 加密方式* @return 加密信息* @throws Exception*/public static byte[] encrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.ENCRYPT_MODE,secretKey);return cipher.doFinal(data);}/*** 3des解密* @param data 需要解密的数据* @param key 解密秘钥* @param type 类型* @return 解密后的结果* @throws Exception*/public static byte[] decrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.DECRYPT_MODE,secretKey);return cipher.doFinal(data);}public static void main(String[] args) throws Exception {String data = "test desc";String type = "DESede";// DES/ECB/PKCS5Paddingbyte[] key = TripleDESUtils.generateKey(type);byte[] encData = TripleDESUtils.encrypt(data.getBytes(),key,type);String encDataStr = ByteToHexUtil.bytesToHexString(encData);System.out.println(data+">>3des encrypt>>"+encDataStr);byte[] decData = TripleDESUtils.decrypt(encData,key,type);System.out.println(encDataStr+">>3des decrypt>>"+new String(decData));}
}

AES 算法的编程使用

1.AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击

2.特点:密钥建立时间短、灵敏性好、内存需求低、安全性高

package com.crypt.des;import com.crypt.ByteToHexUtil;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;/*** aes加密/解密* Created by zhangweixiang on 4/17/2016.*/
public class AESUtil {/*** 生成adesckey* @param type* @return* @throws Exception*/public static byte[] generateKey(String type) throws Exception {KeyGenerator keyGenerator = KeyGenerator.getInstance(type);keyGenerator.init(128);//默认为128位,如果使用192 256则需获取无政策文件(从oracle官网下载UnlimitedJECPolicyJDK7解压后将//其中的2个jar拷贝到jre下的lib下的security中即可 )SecretKey secretKey = keyGenerator.generateKey();return  secretKey.getEncoded();}/*** 通过指定的aeskey加密* @param data 加密的数据* @param key 秘钥* @param type 加密方式* @return 加密信息* @throws Exception*/public static byte[] encrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.ENCRYPT_MODE,secretKey);return cipher.doFinal(data);}/*** aes解密* @param data 需要解密的数据* @param key 解密秘钥* @param type 类型* @return 解密后的结果* @throws Exception*/public static byte[] decrypt(byte[] data,byte[] key,String type) throws Exception {SecretKey secretKey = new SecretKeySpec(key,type);Cipher cipher = Cipher.getInstance(type);cipher.init(Cipher.DECRYPT_MODE,secretKey);return cipher.doFinal(data);}public static void main(String[] args) throws Exception {String data = "test desc";String type = "AES";//AES/ECB/PKCS5Paddingbyte[] key = AESUtil.generateKey(type);byte[] encData = AESUtil.encrypt(data.getBytes(),key,type);String encDataStr = ByteToHexUtil.bytesToHexString(encData);System.out.println(data+">>aes encrypt>>"+encDataStr);byte[] decData = AESUtil.decrypt(encData,key,type);System.out.println(encDataStr+">>aes decrypt>>"+new String(decData));}
}

对称密码的编程使用(DES、3DES、AES)相关推荐

  1. DES/3DES/AES区别

    DES/3DES/AES区别 公元前400年,古希腊人发明了置换密码.1881年世界上的第一个电话保密专利出现.在第二次世界大战期间,德国军方启用"恩尼格玛"密码机,密码学在战争中 ...

  2. DES/3DES/AES加密及区别

    DES 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard) . 目前在国内,随着三金工程尤其是金卡工程的 ...

  3. AES,DES,3DES的区别

    DES 1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES Data Encryption Standard) . 目前在国内,随着三金工程尤其是金卡工程的 ...

  4. 3、【java数据安全】对称加密的5种(DES/3DES、AES、IDEA、PBE)常见算法的使用示例

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  5. AES,DES,3DES加密方式的特点

    SUMMARY DES:Data Encryption Standard(数据加密标准,又美国国密局,选中的IBM的方案,密钥长度为56,标准提出是要使用64位长的密钥,注意: 实际中DES算法只用了 ...

  6. java aes pbe_java – PBE优于DES,3DES和AES的优势

    如果我理解您使用的术语,PBE表示密码或基于密码短语的加密. 根据我所看到的消息来源,PBE是一种"使用"某种加密算法的方式.您可以使用用户提供的密码或密码短语将其转换为加密系统所 ...

  7. 常见加密算法DES、AES和RSA的原理和特点

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 今天主要总结下常用的对称性加密算法DES和AES,非对称性加密算法RSA. 嵌入式专栏 1 DES加 ...

  8. 对称加密、非对称加密、DES、AES、RSA、OpenSSL、数字签名、防篡改

    本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如果错漏,欢迎留言指正 <加密与解密>第4版 加解密 安全领域的重要分支和基础设施 互联网重要数据的传输需要加解密 TCP/IP ...

  9. 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  10. 思科ei ccie里DES和AES加密原理必看

    思科ei ccie里DES和AES加密原理必看,AES (Advanced Encryption Standard,高级加密标准)是美国国家标准与技术研究院(NIST)在2001年建立了电子数据的加密 ...

最新文章

  1. Pandas | 5 种技巧高效利用value-counts
  2. 物体姿态估计数据集介绍
  3. 怎么用python爬取整个网站_5分钟学会Python爬取整个网站
  4. flask-blueprint的简单使用
  5. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析
  6. js导出excel单元格内换行符代码_前端和excel的那些事
  7. 用c语言实现简单的tcp协议,实现一个简单的TCP协议下的C/S
  8. Day25 与类相关的魔术方法
  9. Spring Boot 导出Excel表格
  10. nodejs连接池连接mysql
  11. 一个戏精程序员的内心独白...
  12. 光热发电成千亿元市场 加速产业布局
  13. 真赞!阿里开源的这款分布式事务框架,不愧为民族之光
  14. leetcode刷题日记-472. 连接词
  15. SIMULATE ANNEAL
  16. python文件seek_Python文件读取中:f.seek(0)和f.seek(0,0)有什么区别?
  17. java中finish什么意思,finish是什么意思(你知道Finish 和 Complete 的区别吗?)
  18. MMD->Unity一站式解决方案
  19. 由中序和后序(前序)序列求前序(后序)序列
  20. IPV6到IPV4的转换

热门文章

  1. 基于PHP MySQL在线考试系统,基于PHP和MySQL的考试系统的研究
  2. 使用COSBench工具对ceph s3接口进行压力测试--续
  3. javascript实现汉诺塔动画效果
  4. HDU 2993 MAX Average Problem(斜率优化DP)
  5. 实现pxe的自动化安装
  6. 开发工程师的职场人生路(转)
  7. Ajax updatepanel用法
  8. 网络体系结构(OSI模型和TCP/IP协议 功能)
  9. 嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式
  10. 安徽省2021年高考各科成绩查询,2021年安徽高考总分是多少 考试科目及各科分数...