码迷,mamicode.com
首页 > 其他好文 > 详细

第十九次总结 编码与解码[数据编码]

时间:2020-08-20 18:52:35      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:函数   iges   encoder   byte   字节   地址   字符   code   tostring   

  1. MD5是什么?
  2. Base64编码?

1.MD5是什么?

MD5 是一种加密算法

md5加密是非可逆的 摘要加密算法

SHA-1
SHA-256
通常用在对密码进行加密

MessageDigest md = MessageDigest.getInstance("md5|sha-1|sha-256");
md.update(string.getBytes("utf-8"));
byte[] bs = md.digest();

 

   String msg = "qwe123";
        //先得到消息摘要的对象 [加密方式对象]
        MessageDigest md = MessageDigest.getInstance("md5");
        //将要加密的字符串加入到消息摘要中
        md.update(msg.getBytes("utf-8"));
        //进行摘要加密,得到的是一个字节数组
        byte[] bs = md.digest();

        //将字节数组转换成大整数
        //BigInteger是一个任意精度的整数
        BigInteger num = new BigInteger(1,bs);
        //将整数转换成16进制的字符串
        String str = num.toString(16);
        System.out.println(str);



        MessageDigest md2 = MessageDigest.getInstance("sha-1");
        md2.update(msg.getBytes("utf-8"));
        byte[] bs2 = md2.digest();

        BigInteger num2 = new BigInteger(1,bs2);
        String str2 = num2.toString(16);
        System.out.println(str2);


        MessageDigest md3 = MessageDigest.getInstance("sha-256");
        md3.update(msg.getBytes("utf-8"));
        byte[] bs3 = md3.digest();

 

 输出结果:

技术图片

 

 

 

//将加密的数据转化成16进制的字符串

signum 正负号函数
BigInteger num = new BigInteger(signum,bs);
String str = num.toString(16);

技术图片

 

 输出结果:

技术图片

 

 


Base64编码?

编码过程:
Base64.Encoder encoder = Base64.getEncoder();
byte[] bs = encoder.encode(msg.getBytes("utf-8"));
String str = new String(bs,"UTF-8");

 

        String msg = "中文";
        //得到编码对象
        Base64.Encoder encoder = Base64.getEncoder();
        //开始编码
        byte[] bs = encoder.encode(msg.getBytes("utf-8"));

//        String str = encoder.encodeToString(msg.getBytes("UTF-8"));

        //得到编码之后的字符串
        String str = new String(bs,"UTF-8");
        System.out.println(str);

 

输出结果:

技术图片

 

 

解码过程:
Base64.Decoder decoder = Base64.getDecoder();
byte[] bs2 = decoder.decode(str);
String msg2 = new String(bs2,"UTF-8");

 //解码
        //得到解码器对象
        Base64.Decoder decoder = Base64.getDecoder();
        //解码,得到解码之后的字节数组
        byte[] bs2 = decoder.decode(str);

        String msg2 = new String(bs2,"UTF-8");
        System.out.println(msg2);


        //使用Base64对url中的中文进行处理
        String name="张三";
        Base64.Encoder urlEncoder = Base64.getUrlEncoder();
        String str3 = urlEncoder.encodeToString(name.getBytes("utf-8"));
        String url = "http://www.baidu.com?name="+str3+"&age=20";

        System.out.println(url);

 

输出结果:

技术图片

 

使用场景
浏览器的url地址栏对于中文的支持不友好
如果需要通过浏览器的地址栏传输中文数据,通常先将数据进行Base64的编码
再传递给服务器
服务器拿到数据之后,需要先解码,才能够使用

 

第十九次总结 编码与解码[数据编码]

标签:函数   iges   encoder   byte   字节   地址   字符   code   tostring   

原文地址:https://www.cnblogs.com/zxxb/p/13522685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!