java base64加密与解密
目录
- 前言
- 一、base64加密与解密
- 1. base64有填充的编码与解码
- 2. base64无填充的编码与解码
- 二、MIME友好型base64加密与解密
前言
Base64 编码会将字符串编码得到一个含有 A-Za-z0-9+/ 的字符串。
标准的 Base64 并不适合直接放在URL里传输,因为URL编码器会把标准 Base64 中的“/”和“+”字符变为形如 “%XX” 的形式,而这些 “%” 号在存入数据库时还需要再进行转换,因为 ANSI SQL 中已将“%”号用作通配符。
一、base64加密与解密
1. base64有填充的编码与解码
在 Base64 编码中,输出编码字符串的长度必须是 3 的倍数。如果不是 3 的倍数编码器会根据需要在编码结尾添加一个或两个填充字符 “=” 以满足此要求。
在解码时,解码器会丢弃结尾的那些额外的填充字符进行解码。
//Base64编码String str = "hello!你好,小明!";String encodedString = Base64.getEncoder().encodeToString(str.getBytes());System.out.println(encodedString); //aGVsbG8h5L2g5aW9LOWwj+aYju+8gQ==//Base64解码byte[] decodedBytes = Base64.getDecoder().decode(encodedString);String decodedString = new String(decodedBytes);System.out.println(decodedString); //hello!你好,小明!
2. base64无填充的编码与解码
无填充的编码编码后的字符串结尾不会添加 “=” 字符。一般都使用此方法进行base64加密与解密。
//Base64编码String str = "hello!你好,小明!";String encodedString = Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());System.out.println(encodedString); //aGVsbG8h5L2g5aW9LOWwj+aYju+8gQ//Base64解码byte[] decodedBytes = Base64.getDecoder().decode(encodedString);String decodedString = new String(decodedBytes);System.out.println(decodedString); //hello!你好,小明!
注意:
除了上面介绍的base64类进行base64加密解密,jdk的BASE64Decoder类也提供了base64加密和解密。
但是不推荐使用BASE64Decoder类进行加密解密。
因为BASE64Decoder是对MIME友好的,编码后的字符串如果超过76个字符就会换行,所以BASE64Decoder编码后的字符串会后\n\r这样的字符,在一些处理\n\r的代码里可能会有问题。如果你非要使用BASE64Decoder类进行加密解密,请使用replaceAll(“\r|\n”, “”)对编码后的\n和\r进行替换。
二、MIME友好型base64加密与解密
MIME友好型base64加密与解密即加密后如果长度每大于76就会加入\r\n这样的换行控制符
//Base64编码String str = "727dced7-15c7-48c6-bb11-416ab51f98bc-2a19434a-3a64-496e-b07b-b51b0445384c-22525be7-82c7-4a72-8594-238712d4d59e";byte[] encodedAsBytes = str.getBytes();String encodedMime = Base64.getMimeEncoder().encodeToString(encodedAsBytes);System.out.println("编码:"+encodedMime);//Base64解码byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime);String decodedMime = new String(decodedBytes);System.out.println("解码:"+decodedMime); //727dced7-15c7-48c6-bb11-416ab51f98bc-2a19434a-3a64-496e-b07b-b51b0445384c-22525be7-82c7-4a72-8594-238712d4d59e
java base64加密与解密相关推荐
- JAVA各种加密与解密方式
之前有兴趣研究了一下java的加密与解密的方法,发现市面上有好多种加密解密方式,在这里整理了一下. 目录 1.BASE64加密/解密 2.MD5(Message Digest Algorithm)加密 ...
- Base64加密与解密使用(+拓展:盐值法)
1.什么是Base64 Base64是一种直接利用64位可打印字符来表示二进制数据的算法,是一种比较常见的加密算法.JDK1.8版本提供了java.util.Base64的工具类,使用Base64提供 ...
- php cookie 加密解密,php 使用base64加密、解密cookie的示例
这篇文章主要为大家详细介绍了php 使用base64加密.解密cookie的示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 经测试代码如下: ...
- python中base64加密和解密
base64加密和解密有点头疼,必须要记录下来,以后忘了也能再来复习下 当然啦,能一直记住是最好的-加油吧,少年(其实已经好老了) 操作环境 win10,python3 base的原理 这个还是别人讲 ...
- Javascript Base64加密与解密
Base64加密与解密 Base64.js function Base64() {// private property_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWX ...
- shell脚本:base64加密、解密字符串并赋值给变量方法
几经波折才能够实现使用 base64 加密.解密字符串并赋值给变量.网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出. 代码如下: pwd=$( base64 -d <<&l ...
- Java Base64 加密解密 (数据加密或解决手机Emoji表情被数据库过滤掉的问题)
2017年06月08日 10:15:19 glimmer_it 阅读数:359更多 个人分类: 安全加密 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- Java base64加密解密 两种实现方式
1.为什么要使用Base 64 Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输. 由于一些二进制字符在传输协议中属于 控制字符,不能直接传送,所以需要转换一下才可以. ...
- Base64加密与解密
Base64是jdk1.8新增的加密处理类,Base64处理,在这个类里面有两个内部类 Base64.Encoder :进行加密处理 public byte[] encode(byte[] src ...
最新文章
- python spilt() 方法 ,分隔字符串
- EF架构~为分组添加位运算聚合方法
- 关于hibernate的查询
- org.jeecgframework.core.common.exception.MyExceptionHandler]java.lang.NullPointerException
- jar 打包命令详解
- python逻辑表达式是什么_如何在Python中处理逻辑表达式?
- 精通~Scrum为什么会转型困难
- 【树叶识别】基于matlab HU不变矩树叶识别【含Matlab源码 797期】
- VM虚拟机完美运行macos
- Matlab查看像素坐标
- 决战大数据(升级版):大数据的关键思考 - 电子书下载(高清版PDF格式+EPUB格式)...
- 家(单位)电信宽带,50M上行带宽,不用浪费了,发布Web(网站)应用刚好
- 【Photoshop】Photoshop 64Bit与Camera Raw安装包
- 如何利用已有的切片文件生成TPK
- CentOS7 下配置svn的安装及基础配置介绍
- 表格合并怎么将多工作簿同名表合并到一起
- 《数据结构》实验指导书
- 华为SNS交换机(OEM博科FC交换机)configupload无法使用ftp协议处理方法
- 同主机容器基于XDP的连通性实验
- 使用git进行版本控制