博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java----加密/解密常用算法
阅读量:6035 次
发布时间:2019-06-20

本文共 1729 字,大约阅读时间需要 5 分钟。

hot3.png

一、常用的加密/解密算法 

1.Base64 

严格来说,Base64不是一种加密/解密算法,而是一种编码方式,多用于解决中文乱码中。 

常用场景:对文件、URL等进行Base64编码,以字符串方式发送给对方;对方在进行解码。 

2.AES 

AES是目前用的比较广泛的一种加密/解密算法。先来一段代码 

public class AESUtil {    @Value("${aes.key}")    String key;    byte[] iv = { 0x31, 0x35, 0x36, 0x33, 0x34, 0x33, 0x32, 0x31, 0x37, 0x37, 0x39, 0x35, 0x34, 0x33, 0x30, 0x31 };    public String encrypt(String content) {        try {            Security.addProvider(new BouncyCastleProvider());            Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");            Cipher in = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");//算法/模式/补码方式            in.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,需要一个向量iv,可增加加密算法的强度            byte[] enc = in.doFinal(content.getBytes());            return new String(Hex.encode(enc));        } catch (Exception e) {            log.error("加密遇到异常",e);            throw new RuntimeException(e);        }    }    public String decrypt(String encryptContent){        try {            Security.addProvider(new BouncyCastleProvider());            Key secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");            byte[] enc = Hex.decode(encryptContent.getBytes());            Cipher out = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");//算法/模式/补码方式            out.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));//使用CBC模式,需要一个向量iv,可增加加密算法的强度            byte[] dec = out.doFinal(enc);            return new String(dec);        }catch (Exception e){            log.error("解密遇到异常",e);            throw new RuntimeException(e);        }    }}

由上面的代码可知,加密所需要的参数有:content(需要被加密的字符串)、key(加密需要的密码)。 

key是自己设置的,所以对content加密后,如果不知道key的话,很难解密出来。 

 

转载于:https://my.oschina.net/u/2312022/blog/3009569

你可能感兴趣的文章
我的友情链接
查看>>
记一次kafka故障
查看>>
APUE读书笔记-10信号-19sleep函数
查看>>
CentOS 6安装配置LDAP
查看>>
Linux双网卡绑定bond详解
查看>>
编译安装mod_jk on centOS
查看>>
KAFKA日志管理
查看>>
MySQL主从配置
查看>>
vsphere通过模板批量部署虚拟机
查看>>
gulp 和 Browsersync 的联合使用
查看>>
我的友情链接
查看>>
如何使用PHP计算上一个月的今天
查看>>
关于无法标识/锁定数据库文件
查看>>
在线office文档编辑NTKO使用心得
查看>>
Linux命令(4):cat命令
查看>>
U盘安装Windows
查看>>
SQL PASS西雅图之行——会议篇
查看>>
WPF中Visible设为Collapse时,VisualTreeHelper.GetChildrenCount为0
查看>>
Hadoop中HDFS和MapReduce节点基本简介
查看>>
我在上海IT运维的日子
查看>>