Java Cipher类解密|笔记

41 篇文章 2 订阅
本文介绍了Java中的Cipher类,它是用于加密和解密的核心类,支持DES、AES、Blowfish等对称加密及RSA、DSA、DH等非对称加密算法。通过Cipher.getInstance()创建实例,并使用秘钥和算法参数初始化,实现数据的加密和解密操作。示例代码演示了使用AES/CBC/NoPadding模式进行解密的过程。
摘要由CSDN通过智能技术生成

Cipher类为加密和解密提供密码功能
Cipher类可以构建多种加密算法,如DESAESBlowfish对称加密算法,以及RSADSADH等多种非对称加密算法
Cipher类是一个引擎类,它需要通过getInstance()工厂方法来实例化对象。

实例:

public static String decrypt(String base64Str, String key) throws Exception {
        byte[] bytes = key.getBytes(StandardCharsets.UTF_8);
        //根据指定的字节数组构建密钥
        SecretKey secretKey = new SecretKeySpec(bytes, "AES");
        //get cipher Instance
        Cipher instance = Cipher.getInstance("AES/CBC/NoPadding");
        //用密钥和一组算法参数初始化此Cipher对象
        instance.init(2, secretKey, new IvParameterSpec(bytes));
        //解密
        byte[] doFinal = instance.doFinal(Base64.getDecoder().decode(base64Str));
        return new String(doFinal, StandardCharsets.UTF_8);
    }
public static void main(String []args) { 
       String bs64 = "sFoOJcpVPXmeWr+WAjUmsZA/CJPPsAAGHVrGW21aPGGJxnh7P6pxXeyAKpXnWTeVRkLSjufEfSHmZXiKj9xgfjBIQK7Te4OTy+Yn+S7t7vrsA+DJm6tfWJ3jhzAwfttBmHkmfYgE87HOfXJkdg96BDI21++NqcMKBjQp4gA9iBfo/Ac1L723OpftJRXjP5W857q4S0TvBMwMKE3VxlWHo8qa0NuTt4KP4V9nqaqv8wB0EEzfH7W5Jp7y8l+X6VgZr3FVJPOfn1hW3RieYE9P+DQkN4XH6dvPNiO7Uyk3MZ+VEupkGCUFIRoe4YKQsOWipcnFD/uytWiftT22potLlpR1f31WrYb20c8aBAveFg=";
       String result=  decrypt(bs64,"awdtif20190619ti");
       System.out.println(result);}

实例结果:

vmess://eyJhZGQiOiI2Ny4yMS43MC4xNjgiLCJhaWQiOiI2NCIsImhvc3QiOiJ3d3cuMzAzNzk5MzkueHl6IiwiaWQiOiI2ZTM3ZGZkMy01MzRkLTQ0ZjItODI4ZC0xNmU3YTljMGJmYjIiLCJuZXQiOiJ3cyIsInBhdGgiOiJcL2Zvb3RlcnMiLCJwb3J0Ijo0NDMsInBzIjoxMzMsInRscyI6InRscyIsInR5cGUiOiJkdGxzIiwidiI6IjIifQ==

参考文献

梁栋. Java加密与解密的艺术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值