package liferay;

public class Base64 {

	public static final char EQUAL = '=';
public static final char PLUS = '+';
public static final char QUESTION = '?';
public static final char FORWARD_SLASH = '/';
public static final char SLASH = FORWARD_SLASH; public static String encode(byte raw[], int offset, int length) {
int lastIndex = Math.min(raw.length, offset + length); StringBuilder sb = new StringBuilder(((lastIndex - offset) / 3 + 1) * 4); for (int i = offset; i < lastIndex; i += 3) {
sb.append(encodeBlock(raw, i, lastIndex));
} return sb.toString();
} public static String encode(byte raw[]) {
return encode(raw, 0, raw.length);
} protected static char[] encodeBlock(byte raw[], int offset, int lastIndex) {
int block = 0;
int slack = lastIndex - offset - 1;
int end = slack < 2 ? slack : 2; for (int i = 0; i <= end; i++) {
byte b = raw[offset + i]; int neuter = b >= 0 ? ((int) (b)) : b + 256;
block += neuter << 8 * (2 - i);
} char base64[] = new char[4]; for (int i = 0; i < 4; i++) {
int sixbit = block >>> 6 * (3 - i) & 0x3f;
base64[i] = getChar(sixbit);
} if (slack < 1) {
base64[2] = EQUAL;
} if (slack < 2) {
base64[3] = EQUAL;
} return base64;
} protected static char getChar(int sixbit) {
if ((sixbit >= 0) && (sixbit <= 25)) {
return (char) (65 + sixbit);
} if ((sixbit >= 26) && (sixbit <= 51)) {
return (char) (97 + (sixbit - 26));
} if ((sixbit >= 52) && (sixbit <= 61)) {
return (char) (48 + (sixbit - 52));
} if (sixbit == 62) {
return PLUS;
} return sixbit != 63 ? QUESTION : SLASH;
} public static void main(String[] args) { //Base64加密 System.out.println("===========================================================");
byte[] raw = new byte[]{'A','B','C','D','E','F','G'};
char [] c = encodeBlock(raw,3,4);
for (int i=0;i<c.length;i++) {
System.out.print(c[i]);
} System.out.println("==================================");
String str = encode(raw); System.out.println(str); } }

  

Base64编码加密的更多相关文章

  1. base64编码加密图片和展示图片

    base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于 网络传输.由于这些二进制字符在传输协议中属于控制字符, ...

  2. java base64编码 加密和解密(切记注意乱码问题)

    BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和 ...

  3. php base64编码和urlencode

    base64编码 加密 base64_encode($str); 解密 base64_decode(base64_encode($str)); urlencode和base64混合使用 functio ...

  4. 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  5. python 应用 base64、hmac、hashlib包实现:MD5编码 base64编码解码、SHA256编码、urlsafe_b64encode编码等等基本所有的加密签名的方法

    用python做HTTP接口自动化测试的时候,接口的很多参数是经过各种编码加密处理后在传到后台的,这里列举出python实现 应用 base64.hmac.hashlib包实现:md5编码 sha1编 ...

  6. 【常见加密方法】Base64编码&Tea算法简介

    Base64编码 [Base64编码是什么] Base64是一种基于64个可打印字符来表示二进制数据的表示方法. ——维基百科 Base64,顾名思义,是基于64种可视字符的编码方式.这64种符号由A ...

  7. iOS base64编码 MD5 加密

    //创建一个Base64编码的NSString对象 //字符串 转二进制 NSData *nsdata = [@"iOS Developer Tips encoded in Base64&q ...

  8. ios开发Base64编码以及加密相关学习

    一:.Base64补充 ```objc 1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只 ...

  9. Python中的Base64编码的加密与解密

    Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64 ...

随机推荐

  1. gerrit_bash_commands.sh

    https://github.com/tomwys/gerrit-bash-commands gerrit_bash_commands.sh # Author: Tomasz Wysocki < ...

  2. SharePoint 2013部署自定义HttpModule访问SPContext.Current的一个问题

    如果文档库post提交文档时,自定义HttpModule正好有代码访问SPContext.Current属性则会导致上传文档失败.

  3. python--利用列表推导式快速生成xml格式数据

    在接口自动化测试中,我们经常将要发送的数据放到excel里. json数据放至excel方便,但最近的一个测试,数据是xml格式发送的 如下: 属性 必选/可选 描述 1. Message Eleme ...

  4. Node复制文件

    本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件. // js/app.js:指定确切的文件名.// js/*.js:某个目录所有后 ...

  5. vim与终端的切换

    在vim中按ctrl+z,可以stop vim退出到终端. 在终端工作完后,想要返回vim,则输入fg然后回车. ref: linux任务控制的几个技巧ctrl+z,fg,bg,jobs,kill

  6. Nodejs express、html5实现拖拽上传

    一.前言 文件上传是一个比较常见的功能,传统的选择方式的上传比较麻烦,需要先点击上传按钮,然后再找到文件的路径,然后上传.给用户体验带来很大问题.html5开始支持拖拽上传的需要的api.nodejs ...

  7. python 关于GUI的思考(转)

    作者:知乎用户链接:https://www.zhihu.com/question/19721063/answer/21311275来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  8. Spyer中添加一些常用包的方法

    我用的是Anaconda中的Spyer编译,在导入包pyaudio时,发现找不到,需要手工导入.可以打开Anacoda promt,查看已经安装的包名用:pip list Spyer中的所有包在这里安 ...

  9. 【Python算法】遍历(Traversal)、深度优先(DFS)、广度优先(BFS)

    图结构: 非常强大的结构化思维(或数学)模型.如果您能用图的处理方式来规范化某个问题,即使这个问题本身看上去并不像个图问题,也能使您离解决问题更进一步. 在众多图算法中,我们常会用到一种非常实用的思维 ...

  10. js之操作cookie

    js通过document.cookie获取所有的cookie信息, cookie在存储的格式是键值对,key=value每个键值对之间用; (分号和空格隔开). 添加cookie和修改cookie的值 ...