javaBase64和UrlBase64
整理下工作中常用到的加密解密算法 和 使用场景一、Base64和UrlBase64
二、Md5 + salt
二、对称加密
四、非对称加密
一、Base64和UrlBase64
1 Base64
定义: 严格意义上讲属于一种编解码方式;
使用64个通用的可打印字符来存储和表示 二进制字数据,同时也可以进行简单的加密,生成不可读文本。
字符集范围:
["A", "B", "C", ... "a", "b", "c", ... "0", "1", ... "+", "/‘]
大小写字母,0到9,+ / = 共65个,=作为后缀填充
使用场景:简单加密
网络数据传输:url、cookie、网页中传输二进制数据
密钥存储
数字证书存储
实现方式Commons Codec(简称"CC" 推荐使用)
Bouncy Castle(简称"BC")
JDK(不推荐使用,内部api后期存在移除风险)
CC方式实现
引入jar包 commons-codec commons-codec 1.15
实现及测试类package com.util.base64; import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64; /** * 基于Commons Codec的Base64加密 */ public class Base64Util { private static final String ENCODING = "UTF-8"; /** * 一般Base64加密 */ public static String encode(String data) throws UnsupportedEncodingException{ byte[] encodedByte = Base64.encodeBase64(data.getBytes(ENCODING)); return new String(encodedByte, ENCODING); } /** * 安全Base64加密 */ public static String encodeSafe(String data) throws UnsupportedEncodingException{ /* * 注意:这里采用的encodeBase64(byte[] bytes, boolean arg1) * arg1为true时,加密后的字符串每行为76个字符,不论每行够不够76个字符,都要在行尾添加"r " */ byte[] encodedByte = Base64.encodeBase64(data.getBytes(ENCODING),true); return new String(encodedByte, ENCODING); } /** * Base64解密 */ public static String decode(String data) throws UnsupportedEncodingException{ byte[] decodedByte = Base64.decodeBase64(data.getBytes(ENCODING)); return new String(decodedByte, ENCODING); } /** * 测试 * @param args * @throws UnsupportedEncodingException */ public static void main(String[] args) throws UnsupportedEncodingException { /********************测试一般encode*********************/ String data = "这句是明文原文"; System.out.println("原文-->"+data); String encodedStr = Base64Util.encode(data); System.out.println("加密后-->"+encodedStr); String decodedStr = Base64Util.decode(encodedStr); System.out.println("解密后-->"+decodedStr); System.out.println(data.equals(decodedStr)); System.out.println("================================"); /********************测试安全encode*********************/ String data2 = "这句是明文原文 这句是明文原文"; System.out.println("原文-->"+data2); String encodedStr2 = Base64Util.encodeSafe(data2); System.out.println("加密后-->"+encodedStr2); String decodedStr2 = Base64Util.decode(encodedStr2); System.out.println("解密后-->"+decodedStr2); System.out.println(data2.equals(decodedStr2)); } }
2 UrlBase64
定义: 由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和_
作用:编码数据在网络中安全顺畅的传输
编码流程:1、明文使用BASE64进行加密
2、在BASE64的基础上进行以下编码:
1)去除尾部的"="
2)把"+"替换成"-"
3)把"/"替换成"_"
解码流程:1、把BASE64URL的编码做如下解码:
1)把"-"替换成"+"
2)把"_"替换成"/"
3)(计算BASE64URL编码长度)%4
a)结果为0,不做处理
b)结果为2,字符串添加"=="
c)结果为3,字符串添加"="
2、使用BASE64解码密文,得到原始的明文
基于CC 实现UrlBase64加密解密package com.util.base64; import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64; /** * 基于Commons Codec的URLBase64加密 */ public class UrlBase64Util { private static final String ENCODING = "UTF-8"; /** * URLBase64加密 */ public static String encode(String data) throws UnsupportedEncodingException{ byte[] encodedByte = Base64.encodeBase64URLSafe(data.getBytes(ENCODING)); return new String(encodedByte, ENCODING); } /** * URLBase64解密 */ public static String decode(String data) throws UnsupportedEncodingException{ byte[] decodedByte = Base64.decodeBase64(data.getBytes(ENCODING)); return new String(decodedByte, ENCODING); } /** * 测试 * @param args * @throws UnsupportedEncodingException */ public static void main(String[] args) throws UnsupportedEncodingException { String data = "这里是明文url"; System.out.println("原文-->"+data); String encodedStr = UrlBase64Util.encode(data); System.out.println("加密后-->"+encodedStr); String decodedStr = UrlBase64Util.decode(encodedStr); System.out.println("解密后-->"+decodedStr); System.out.println(data.equals(decodedStr)); } }
让你长寿10年的24个健康好习惯大家好,我是要存钱又要精致生活的宋鹿笙。关注我,每天与你分享极简生活和省钱存钱干货。长寿,是每个人都梦寐以求的事情。除了遗传基因等先天因素,很多后天养成的习惯对健康和寿命影响也很大
长寿的秘诀是什么?激活你体内长寿基因的三个小诀窍死亡是每个人最终不可避免会经历的事情。但最近的研究指出在对饮食运动和精神面貌方面进行合理的调整可以起到减缓衰老和减轻老年病症的效果。然而关于人类最长可以活多久这个问题,其实还是一直
七种食物没保质期,即便存放很久也能吃,别再傻傻丢掉了健康是生命的本钱,健康是指两个方面身体精神都处于良好的状态,有较强的生活体能和劳动能力,这才是对健康最基本的要求。想要确保自身身体健康,强壮和精力非常重要,这反映了一个人的身体能力
人过45,是养生黄金年龄,想身体健康,就要做到四戒45岁,是人生的一个转折点,这不仅是45岁后,人要开始进入衰老状态,身体上也会有很明显的变化,而在这个年龄,是养生的黄金年龄,如果在这个年龄能注意好好保养身体,那么,长寿可期,相反
45岁后,劝你改掉这6个坏习惯,或拥有健康体质想要延长寿命需要在恰当的时候做正确的事情,养生工作做好,坚持良好习惯,可以增强免疫能力,同时延缓机体衰老,才能将疾病拒之门外。有的人之所以年纪轻轻各种疾病折磨源于不正确生活方式拖累
人老了不应该多吃肉?建议3种肉不妨多吃,健康营养现在随着经济生活水平提高,人们生活质量是越来越好,对于养生话题也是越来越关注。大家普遍可以看到这样一个现象,如今高寿老人是逐年增多,甚至几天前新闻还报道过一个新闻,90多岁的老爷爷
糖友均衡摄取这六大类食物,有利血糖控制糖尿病是近年来国人极为重视的疾病,被列为国人十大死亡原因之一。其相关并发症如肾病变伤口不易愈合等,不仅增加感染及死亡风险,所衍生的医疗处置也占了国家医疗支出上极大部分。近来研究发现
裙子短了怎么加长好看?在裙子的修改中,改变裙长是最为普遍碰到的情况,因为市场上的成品裙装并非依自己的实际身材定制,所以,很多女生就会在实穿后改动一下裙子的长度。那么如果裙子短了怎么加长好看呢?这里给大家
大S被曝再婚嫁韩国初恋男方是前酷龙成员具俊晔搜狐娱乐讯3月8日,据韩国媒体报道,Clon组合的具俊晔(53岁)和中国台湾演员徐熙媛大S(46岁)结为夫妻。据韩国媒体报道,具俊晔和大S最近完成了结婚登记。本报于本月初确认了两人
关晓彤原来是微胖身材,穿裹胸小礼裙显肩宽,但形象气质仍在线裙装款式众多,但是能够选择适合自己的裙装款式,最大限度内进行个人魅力的释放才是最关键的。参考着个人的肤色以及身体形态,甚至是形象气质来匹配裙装款式,才是搭配过程中的重中之重。如何选
芒晃村从产业单一到人均收入过万原标题美了美!芒晃村又双叒叕变身啦!从穷寨子到特色旅游村,从产业单一到人均收入过万,从无人问津到人们津津乐道,这些年芒晃村经历了一次又一次的华丽转身。2022年,新春伊始。走进芒晃