javaurl安全的base64编码_URL安全的Base64编码
Base64编码可⽤于在HTTP环境下传递较长的标识信息。在其他应⽤程序中,也常常需要把⼆进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采⽤Base64编码不仅⽐较简短,同时也具有不可读性,即所编码的数据不会被⼈⽤⾁眼所直接看到。
然⽽,标准的Base64并不适合直接放在URL⾥传输,因为URL编码器会把标准Base64中的「/」和「+」字符变为形如「%XX」的形式,⽽这些「%」号在存⼊数据库时还需要再进⾏转换,因为ANSI SQL中已将「%」号⽤作通配符。
为解决此问题,可采⽤⼀种⽤于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的「+」和「/」分别改成了「*」和「-」,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统⼀了数据库、表单等处对象标识符的格式。
URL安全的Base64编码适⽤于以URL⽅式传递Base64编码结果的场景。该编码⽅式的基本过程是先将内容以Base64格式编码为字符串,然后检查该结果字符串,将字符串中的加号+换成中划线-,并且将斜杠/换成下划线_。
详细编码规范请参考RFC4648标准中的相关描述。
补充:对于末尾的“=”占位符,Bouncy Castle将之⽤.代替,⽽Commons Codes杜绝任何的补位符。下⾯的⽰例代码使⽤了Bouncy Castle的⽅法,将“=”⽤“.”代替。
⽤于URL的改进版Base64编码C#实现:
///
/// 从⼆进制字符转换为适⽤于URL的Base64编码字符串
/// < /summary>
public static string ToBase64StringForUrl(byte[] token)
{
return Convert.ToBase64String(token).Replace('+', '*')
.Replace('/', '-')
.Replace('=', '.');
}
URL安全的Base64编码,解码
Base64 可以将⼆进制转码成可见字符⽅便进⾏http传输,但是base64转码时会⽣成“+”,“/”,“=”这些被URL进⾏转码的特殊字符,导致两⽅⾯数据不⼀致. 我们可以在发送前将“+”,“/” ...
url、base64 编码规则
UrlEncode 相关: URI所允许的字符分作保留与未保留. 保留字符是那些具有特殊含义的字符. 例如, 斜线字符⽤于URL (或者更⼀般的, URI)不同部分的分界符. 未保留字符没有这些特殊含 ...
Base64编码原理与应⽤
Base64 编码
Base64 字母表 Base64 编码将⼀个 8 位字节序列拆成 6 位的⽚段,并为每个 6 位的⽚段分配⼀个字符,这个字符是 Base64 字母表中
的 64 个字符之⼀. Wert Zeichen ...
Base64编码的java实现
Java本⾝是提供了Base64编码的⼯具包的,做项⽬的时候⾃⼰实现了个,在这⾥记录⼀下: /** Base64编码数组 */ private static final String base64En ...
关于图⽚的Base64编码
什么是Base64编码 Base64编码是⼀种图⽚处理格式,通过特定的算法将图⽚编码成⼀长串字符串,在页⾯上显⽰的时候,可以⽤该字符串来代替图⽚的url属性. base64编码就是长得像下⾯这样⼦的代 ...
图⽚的Base64编码
Base64编码是⼀种图⽚处理格式,通过特定的算法将图⽚编码成⼀长串字符串,在页⾯上显⽰的时候,可以⽤该字符串来代替图⽚的url属性.我们可以来看⼀下实际的效果 Base64编码效果 在上图中,我们 ...
Atitit.Base64编码原理与实现设计
Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要⽤⾃⼰的base64编码⽅案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...
前端对base64编码的理解,原⽣js实现字符base64编码
⽬录 常见对base64的认知(不完全正确) 多问⼀个为什么,base64到底是个啥? 按照我们的思路实现⼀下 到这⾥基本就实现了,结果跟原⽣的⽅法打印的是⼀样的 下⼀次 @( 对于前端⼯程师来说ba ...
随机推荐
不可错过的javascript迷你库
最近看着下⾃⼰的github star,把我吓坏了,⼿贱党,收藏癖的我都收藏了300+个仓库了,是时候整理⼀下了. Unix主张kiss,⼩⽽美被实践是最好⽤的,本⽂将介绍笔者收集的⼀些⾮常赞的开源库 ...
解决Oracle在scott⽤户下创建视图(VIEW)权限不⾜的⽅法
问题描述:在scott⽤户下创建视图的时候,报错:权限不⾜.(其他⽤户以此类推)解决⽅法: 以dba⽤户登录 sqlplus / as sysdba 赋予scott⽤户创建VIEW的权限 grant  ...
ppt 制作海报 导出⾼分辨率图⽚
⽤ppt做海报,导出图⽚的时候,发现导出的图⽚的分辨率只有96ppi,清晰度不太好. 怎么能这样呢! ⽹上搜了⼀下,发现微软提供了⼀个修改注册表的⽅法,点击这⾥访问.不过那⾥讲的最新只有2010,我的 ...
js call apply在线url网址编码解码
php下xcache的安装
android82 ⽂件下载框架xUtils
package com.itheima.xutils; import java.io.File; import com.lidroid.xutils.HttpUtils; import com.lid ...
The main reborn ASP.NET MVC4.0: using CheckBoxListHelper and RadioBoxListHelper
The new Helpers folder in the project, to create the CheckBoxListHelper and RadioBoxListHelper class ...
Linux 如何判断⾃⼰的服务器是否被⼊侵
如何判断⾃⼰的服务器是否被⼊侵了呢?仅仅靠两只⼿是不够的,但两只⼿也能起到⼀些作⽤,我们先来看看UNIX系统上⼀些⼊侵检测⽅法,以LINUX和solaris为例. 1.检查系统密码⽂件 ⾸先从明显的⼊ ...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。