Android Base64 Md5 SHA1 编码解码 解析

主要讲解的内容:编码、数字摘要、加密、解密
编码:Base64、urlEncoder、urlDecoder

当我们发送一个get请求的时候 形式如下
xxx?name=阿斯顿f&age=100

当我们在一个请求中传递的数据出现了中文和一些Url中定义的符号如(?&)那么请求就无法识别

这里要强调的是无论是get还是post在传递值的时候都是不支持上面那些敏感词的传递的。

如果传送的请求包含上述的信息,那么我们就需要对我们的请求进行一次编码封装,以传递我们所需要传递的信息。
代码样例如下:

public class Test{
    String url="http://www.baidu.com?search=黑马程序员";
    String encodeUrl=URLEncoder.encode(url);
}

//如上就完成了一次简单的编码,将我们要传递的敏感词以非敏感词的形式传递过去
注转换后的敏感词都是以%开始的2位16进制数表示的

那么以上就是编码,同样我们需要一个解码的过程,那么这个方法就是

String decodeUrl=URLDecoder.decode(encodeUrl);
String decodeUrl=URLDecoder.decode(url);
//此处的两个解码 一个是经过加密的一个没经过加密的但是解析的结果一样,所以对于发回来的请求不知道是否进行解码,都可以直接对其进行解码,因为其结果相同  不会报错!

Base64:可以把一些对象转换成String,用处:传输的时候不要明文传输
典型应用场景:上传图片、上传语音 但是Base64并不是加密而是编码

Base64的主要方法 首先我们先看下原版的方法解释
//Base64-encode the given data and return a newly allocated String with the result.
解释:Base64 编码,把给定的数据返回为一种新的以重定位变换为结果的String对象
public static String decodeToString(String input)

下面进行一个代码实例讲解

//1.从drawable-hdpi得到一个图片
Bitmap sourceBitmap=BitmapFactory.decodeResource(getResource{},R.mipmap.drawable);
//2.转换成byte[]
 ByteArrayOutputStream out=new ByteArrayOutputStream();
sourceBitmap.compress(CompressFormat.PNG,100,out);
byte[] sourceBitmapByteArr=out.toByteArray();
//3.base64->String  这里是编码的完成 String 是可传送的对象
String bitMapString=Base64.encodeToString(sourceBitmapByteArr,Base64.DEFAULT);

//4.base64->String->byte[]//开始解码 在服务器端进行
byte[]  bitmapDecodeByteArr=Base64.decode(sourceBitmapString ,Base64.DEFAULT);
//5.byte[]->bitmap
Bitmap bitmap=BitmapFactory.decodeByteArray(bitmapDecodeByteArr,0,BitmapFactory.length());
//6.bitmap设置为mIv的src,验证是否可以这样进行传递
ImageView.setImageBitmap(bitmap);

最后总结一下base64的优势,将明文编码一定程度的保护了明文,第二个在一定程度上压缩了图片的大小,降低了流量的消耗。

在说一个应用场景:将对象保存到sp中–>Base64支持把byte[]–>String只需把对象先转换成byte[]就可以存到sp中,然后在使用的时候进行解码就可以了.

数字摘要md5 sha1
md5:密码一般都是需要md5,不可逆,而且1kb的文件和1tb的文件在md5编码之后,得到的长度是一样的。
md5的作用,或者叫做数字摘要->**确定数据未被修改
文件的唯一性**
压缩文件本身就提供MD5比较,当你下载的文件和服务器给你的MD5进行比较时,如果没有匹配,那么就说明你下载的软件被修改了!

加盐:当上传的数据过于简单,考虑到截获信息方,可能有很大的数据库进行数据破解,如果传送的数据例如111111那么只要对方数据库够大,还是很容易对我们上传的数据进行破解的,那么就需要对原始数据进行加盐如将 111111变成 !@#<script type="math/tex" id="MathJax-Element-219">#</script>!@#$111111
那么就变成了不可破解的MD5编码 而且对于用户透明,安全性提高了,用户体验未变。

SHA1的作用和MD5相同的作用
秒传功能,在上传之前,计算sha1值如果发现有相同的sha1值,那么相同就可以秒传了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值