BASE64每76个字符自动换行
为什么80%的码农都做不了架构师?>>>
今天用BASE64加密时遇到一个奇怪问题,每76个字符自动换行,在网上找到了重写方法:
public class BASE64Encoder
{private static char[] codec_table = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' }; public BASE64Encoder() { } public static String encode(byte[] a) { int totalBits = a.length * 8; int nn = totalBits % 6; int curPos = 0;// process bits StringBuffer toReturn = new StringBuffer(); while (curPos < totalBits) { int bytePos = curPos / 8; switch (curPos % 8) { case 0: toReturn.append(codec_table[(a[bytePos] & 0xfc) >> 2]); break; case 2: toReturn.append(codec_table[(a[bytePos] & 0x3f)]); break; case 4: if (bytePos == a.length - 1) { toReturn .append(codec_table[((a[bytePos] & 0x0f) << 2) & 0x3f]); } else { int pos = (((a[bytePos] & 0x0f) << 2) | ((a[bytePos + 1] & 0xc0) >> 6)) & 0x3f; toReturn.append(codec_table[pos]); } break; case 6: if (bytePos == a.length - 1) { toReturn .append(codec_table[((a[bytePos] & 0x03) << 4) & 0x3f]); } else { int pos = (((a[bytePos] & 0x03) << 4) | ((a[bytePos + 1] & 0xf0) >> 4)) & 0x3f; toReturn.append(codec_table[pos]); } break; default: //never hanppen break; } curPos+=6; } if(nn==2) { toReturn.append("=="); } else if(nn==4) { toReturn.append("="); } return toReturn.toString(); } }
byte 转String str.getBytes();
String 转 byte new String(byte);
转载于:https://my.oschina.net/w4ww/blog/664233
BASE64每76个字符自动换行相关推荐
- 读取一个文件,将其Base64编码,每76个字符加一个换行
<?php //读取一个文件,将其Base64编码,每76个字符加一个换行 $path = 'C://UsbLogger.txt'; if(is_file($path))//判断是否为文件 {$ ...
- Base64是一种基于64个可打印字符来表示二进制数据的表示方法,它Base64规定每76个字符后需要加上一个回车换行
Base64是一种基于64个可打印字符来表示二进制数据的表示方法,它Base64规定每76个字符后需要加上一个回车换行.例如: TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBv ...
- shell脚本:base64加密、解密字符串并赋值给变量方法
几经波折才能够实现使用 base64 加密.解密字符串并赋值给变量.网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出. 代码如下: pwd=$( base64 -d <<&l ...
- base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法
用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...
- 字符编码笔记:ASCII,Unicode和UTF-8(转) + BASE64
原文出处:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 今天中午,我突然想搞清楚Unicode和UTF-8之间 ...
- 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...
- 常见的字符编码ascii、gb2312、utf-8和base64的规则
目录 常见的字符编码 ANSI ASCII 扩展 ASCII 码 GB2312 计算机中汉字的处理 区位码 GB2312双字节编码规则 三码转换 扩展阅读:为什么有机内码,避免与西文冲突 GBK 承上 ...
- base64随机字符混淆加密、解密-美拍视频地址解密(兼容ie、中文)
用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图: 于是好奇之下研究下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...
- 【MIME协议】base64编码与quoted-printable编码
文章目录 MIME概述 base64编码 基本原理 具体步骤 例题 quoted-printable编码 基本步骤 例题 ASCLL字符代码表 MIME概述 电子邮件协议SMTP通过连接建立.邮件传送 ...
最新文章
- 通过评估假设行为来学习人类目标
- [ Luogu 4626 ] 一道水题 II
- CAN总线基础(三)
- a卡显存测试软件_官方游戏性能堪比RTX 3080 苏姿丰:RX 6000 Big Navi是史上最强A卡...
- docker registry 镜像同步
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(执行安装_07)
- soul群聊显示服务器异常,soul群聊状态是什么
- 运用PARALLEL方式成倍提升Oracle数据分析效率
- 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
- python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程
- Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)
- c语言常用函数doc下载,c语言常用函数.doc
- 四川省泸州市蓝田科三流程细节
- hadoop数仓建设之日志采集
- 苹果在研发屏下 Face ID 和 Touch ID该技术可能最终不会商用
- C. Removing Smallest Multiples codeforces 1734C
- “九型人格”-你的团队用了吗
- Oracle 10.2 流复制问题(二)—— C001: large txn detected
- JavaScript中函数的length属性
- Mysql事务隔离与Spring
热门文章
- 量子算法、DNA计算与后经典计算时代
- 资金只够支撑10个月,自动驾驶致命事故重演:特斯拉陷入困境
- 机会与挑战:2019人工智能应用趋势预测
- 德勤2018TMT八大预测:移动互联网迎来二次革命
- AI技术的天花板:图灵机无法建立“自我”意识的概念
- 蚂蚁上市后,马云不是最大赢家,竟是她!
- 【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤
- pom配置之:distributionManagementsnapshot快照库和release发布库
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
- 记账本开发进程第一天