编码和加密算法

 

编码和加密算法。

前言

ASCLL编码可以分为简单的和在简单基础上复合(即可以有简单编码推出来)的编码。简单的包括ASCll码和双字节的unicode,三字节的utf-8。

主要的编码方式可以分为ASCLL编码和Base64编码,和URL(统一资源定位符)编码中对于中文字体的编码。

加密算法主力军是hash算法、hash算法包括HmaxMD5,MD5,SAH-系列,hash算法的实现有object的哈希算法,hashcode(),等等。hash算法是单向的,产生的结果不可逆。

有了编码,邮件服务器可以将二进制文件向传送文件那样传送,有了加密算法,可以对数据库起到保密作用等等。

字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。是一种代替意思的字符。

ASCALL编码是一张表,里面包含了常见字符和其十六进制编码。采用编码方式不同,一个相同的字产生的编码也是不一致的。比如说

百度安全验证https://www.baidu.com/s?wd=%E4%B8%AD%E6%96%87

在计算机当中,只能传以字符,比如这种中文字体,是不被赞同的,所以浏览器会自动的将中文转为浏览器自己可以认识的,就是我们要说的URL编码。

URL编码

URLEncoder类:进行URL编码操作,URLDecoder类,进行解码操作

这里举一个简单的栗子。URLEncoder,编码操作

String url=URLEncoder.encode("亚麻和","utf-8");
System.out.println(url);

输出结果:%E4%BA%9A%E9%BA%BB%E5%92%8C

URLDecoder解码操作

String url=URLDecoder.decode("%E4%BA%9A%E9%BA%BB%E5%92%8C","utf-8");
System.out.println(url);

输出结果:亚麻和

注意:不要把URL整个放进URLEncoder,即编码时,只将中文放进Encoder中,解码时,可以将整个URL放进URLDecoder当中。

总结:URL是对字符进行编码,转为%xx的形式

 Base64

Base64:将字节数组编码成字符串,或将字符串编码成字节数组。

Base64 基于64,将要处理的字节内容0xe4,0xb8,0xad,一共有二十四位。在Base64中,重新将每六位看成是一个字节。低位任然是从2的零次方开始。先转十进制,然后由十进制转为其他进制

转十六进制有两种方法:

java进制转换方法_meteordy的博客-CSDN博客

MD5加密算法

对内容进行加密

MessageDigest md5=MessageDigeset.getInstance("MD5")//算法名称可以是MD5,SHA-,等等,是一个算法就成

 digest摘要,Message信息,信息和摘要等于MessageDigsest 。在java中,将加密的过程集成为一个类。

md5.update("内容")//将内容存入md5当中
md5.digeset()//加密

md5.digest()返回一个byte[]数组,即加密后的结果,md5.update()面向字节,可见为了文件图片等更加方便的上传到网页上。

为了防止数据库内容被攻击,最常见的攻击就是彩虹表攻击,即手动列一张表,该表包括一些用户最喜欢的密码,还包括密码的哈希值,得到想要的密码简直轻轻松松。怎么办呢?打破密码的稳定性,加盐。盐产生的是随机数。盐加密码然后一个哈希,buff叠满,每次得到的结果都不是一样的,增添了一份保障。

java提供了一个类KeyGenerator(类似于盐),可以产生密钥key。

更有一种加密算法mac它需要的是一个key,所以有产生key的类。

mac.init(key)//对摘要进行初始化
mac.update()//添加内容,通常是密码
mac.dofinal()//得到一个结果,该结果为加密后的内容
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值