资讯专栏INFORMATION COLUMN

JAVA加密算法(3)- 对称加密算法(DES、3DES、AES)

xiaoqibTn / 3193人阅读

摘要:对称加密算法概念加密密钥和解密密钥相同,大部分算法加密揭秘过程互逆。特点算法公开相比非对称加密计算量小加密速度快效率高。

对称加密算法概念

加密密钥和解密密钥相同,大部分算法加密揭秘过程互逆。

特点:算法公开、(相比非对称加密)计算量小、加密速度快、效率高。

弱点:双方都使用同样的密钥,安全性得不到保证。

常用对称加密算法

DES(Data Encryption Standard)

3DES(DES加强版,使用3次DES计算,Triple DES,DESede)

AES(Advanced Encryption Standard,3DES加强版)

JDK版DES/3DES/AES算法调用模板 1. 生成密钥
//KeyGenerator,密钥生成器
KeyGenerator keyGen = KeyGenerator.getInstance("DES");//算法:DES,DESede,AES

//初始化密钥生成器
keyGen.init(56); //各算法密钥长度不同,参见说明

//生成密钥
SecretKey secretKey = keyGen.generateKey();

//生产字节码数据
byte[] key = secretKey.getEncoded();

说明:
1.通过「KeyGenerator.getInstance("DES")」生成密钥,
2.参数为算法名称:分别对应DES、DESede(即3DES)、AES
3.每种算法密钥长度参数:DES(56),3DES(112,168),AES(192,256)

2.加/解密
//通过字节码数据key 恢复密钥
SecretKey secretKey = new SecretKeySpec(key, "DES");

//Cipher完成加密/解密工作
Cipher cipher = Cipher.getInstance("DES");

//根据密钥,对Cipher初始化,并选择加密还是解密
cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] result = cipher.doFinal(data);

1.加密或解密都通过cipher.init()设置,参数:ENCRYPT_MODE/DECRYPT_MODE
2.加密或解密都通过cipher.doFinal() 执行,获得byte[]类型结果。

代码示例
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class DESUtil {
    
    /*
     * 生成密钥
     */
    public static byte[] initKey() throws Exception{
        KeyGenerator keyGen = KeyGenerator.getInstance("DES");
        keyGen.init(56);
        SecretKey secretKey = keyGen.generateKey();
        return secretKey.getEncoded();
    }

    
    /*
     * DES 加密
     */
    public static byte[] encrypt(byte[] data, byte[] key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(key, "DES");
        
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] cipherBytes = cipher.doFinal(data);
        return cipherBytes;
    }
    
    
    /*
     * DES 解密
     */
    public static byte[] decrypt(byte[] data, byte[] key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(key, "DES");
        
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] plainBytes = cipher.doFinal(data);
        return plainBytes;
    }

    //Test
    public static void main(String[] args) throws Exception {
    byte[] desKey = DESUtil.initKey();
        System.out.println("DES KEY : " + BytesToHex.fromBytesToHex(desKey));
        byte[] desResult = DESUtil.encrypt(DATA.getBytes(), desKey);
        System.out.println(DATA + ">>>DES 加密结果>>>" + BytesToHex.fromBytesToHex(desResult));
        
        byte[] desPlain = DESUtil.decrypt(desResult, desKey);
        System.out.println(DATA + ">>>DES 解密结果>>>" + new String(desPlain));
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66239.html

相关文章

  • 慕课网_《Java实现对称加密》学习总结

    时间:2017年4月11日星期二说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://github.com/zccodere/s... 第一章:对称加密算法DES 1-1 JAVA对称加密算法DES 加密密钥=解密密钥 对称加密算法 初等 DES --3D...

    tomlingtm 评论0 收藏0
  • 常用加密算法探寻

    摘要:在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。非对称加密原理非对称加密算法需要两个密钥公开密钥和私有密钥。 在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 对称加密 showImg(https://segmentfault.com/img/bVbacxw?w=1128&h=468); 原理: 加密和解密数据使用同一个密钥,适...

    Yu_Huang 评论0 收藏0
  • killBase系列 -- 密码学(一)

    摘要:系列密码学二传送门密码学一基础密码学算法分类消息编码消息摘要类,类,对称密码非对称密码数字签名五元组明文原始信息。非对称密码包提供给,,等非对称加密算法。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。 前言 最近一场面试,面试官问了我 对称加密与非对称加密的问题,虽然曾经看过一些内容,但是没有系统的整理,所以当被问的时候,脑子里一片空白,没有回答上...

    tomato 评论0 收藏0
  • 加密解密算法介绍

    摘要:加密解密算法介绍算法目前常见有加密算法,散列算法,编码算法,使用位关键字作为流加密算法加密技术通常分为两大类对称式和非对称式。对称性加密算法有用途对称加密算法用来对敏感数据等信息进行加密数据加密标准,速度较快,适用于加密大量数据的场合。 加密解密算法介绍 算法目前常见有: 加密算法,散列算法,Base64(编码算法),https(SSL使用40位关键字作为RC4流加密算法) 加密技术通...

    ThinkSNS 评论0 收藏0
  • 加密解密

    摘要:协议在应用层协议通信之前就已经完成加密算法通信密钥的协商及服务器认证工作。数据加密之后,只有密钥要用一个安全的方法传送。 博文参考 http://sweetpotato.blog.51cto.com/533893/1662061 http://www.cnblogs.com/jasperhsu/p/5107533.html http://www.178linux.com/77188 s...

    zero 评论0 收藏0

发表评论

0条评论

xiaoqibTn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<