Base64的编码原理

古城微笑少年丶 2022-03-11 12:42 288阅读 0赞

这里可能需要借助一些在线工具,例如系统编码的AsciI码对照表,例如我的就是gb2312的,具体查看自己系统编码可以cmd下输入chcp得到一组数字后去编码对照表查找,还有就是各种进制转换(当然也可以进行手算),最后就还有Base64编码对照表

直接上代码

  1. import cn.hutool.core.codec.Base64Decoder;
  2. import cn.hutool.core.codec.Base64Encoder;
  3. /**
  4. * @author 633805 LYH
  5. * @version V1.0
  6. * @description Base64原理
  7. * @create 2019-03-08 7:42
  8. * @since 1.7
  9. */
  10. public class F {
  11. public static void main(String[] args) {
  12. /*
  13. 一个字节8个位 普通的汉字两个字节 最大字节为3个字节 例如蒙古文 藏文
  14. base64基于最大 3个字节的(一个字节八个位) 3*8=24 -----》4*6=24 由于6,8的最小公倍数是24 所以Base64采用6个位的计算 范围就是 000000 (0) ~ 111111 (63)
  15. 每个结果一个字符 总共64 具体组成为 a-z(26) A-Z(26) 0-9(10) / +(2个符) 总共64
  16. 第一步:找到中文在操作系统中字符编码的十进制代码(可以采用excel里面的Code函数计算十进制) cmd中输入chcp 找到系统的编码代号默认936即gb2312
  17. 第二步:十进制转换成二进制
  18. 第三步:对二进制重新编码(六位一组)然后再每组前面加0 凑成8位一个字节 再 变成十进制
  19. 第四步:从Base64编码表中查找其对应的字符
  20. 十进制 二进制
  21. 德 46530 1011010111000010
  22. 邦 45294 1011000011101110
  23. 德邦二进制组合(二进制) 10110101110000101011000011101110
  24. 二进制编排(六位区分然后前面补0凑成8位一个字节) 00101101 00011100 00001010 00110000 00111011 00000010
  25. 十进制 45 28 10 48 59 2
  26. Base64表对照查找 t c K w 7 g
  27. 最后产生的字节数一定要是4的倍数,不是就用==代替 例如德邦两个字最后只产生6个字节所以后面需要两个==(因为Base64编码时,是将3个字节转变为4个字节,最终得到的字节数必然是4的倍数)
  28. */
  29. try {
  30. //编码
  31. String result= Base64Encoder.encode("德邦","gb2312") ;
  32. System.out.println(result);
  33. //解码
  34. String decode = Base64Decoder.decodeStr("tcKw7g==", "gb2312");
  35. System.out.println(decode);
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. }

20190308085817975.png

发表评论

表情:
评论列表 (有 0 条评论,288人围观)

还没有评论,来说两句吧...

相关阅读

    相关 base64编码

    用途:采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。例如 输入:s13 输出:czEz Base64编码说明   Base64编码要求

    相关 Base64编码原理

    遇到的问题:将昵称设置为表情符入库时出错,原因:数据库编码格式为utf-8. 解决方案: 1、将数据库编码格式改为utf8mb4;(该方法不太好,需要修改数据库编码格式)

    相关 Base64编码

           开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该。大概介绍一下

    相关 Base64编码原理

    这里可能需要借助一些在线工具,例如系统编码的AsciI码对照表,例如我的就是gb2312的,具体查看自己系统编码可以cmd下输入chcp得到一组数字后去编码对照表查找,还有就是

    相关 弄懂Base64编码原理

            最近生成密钥对使用Base64进行编码的,就学习了一下,下面是简单介绍:                目前Base64已经成为网络上常见的传输8Bit字节代