Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
  Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

  Java相关参考代码如下:


import java.nio.charset.Charset;

import org.apache.commons.codec.binary.Base64;

public class EnhancedBase64Utils {

  private static Charset charset = Charset.forName("utf-8");

  public static String encrypt(String src) {

    int mask_ASCII = 0X6D; //运算掩码
int check_ASCII = 0X9C; //校验码初始值 int i = ; byte[] streamContent = new byte[ (int) src.getBytes().length + ]; //取得文件内容
for (i = ; i < src.getBytes().length; i++) {
streamContent[i] = src.getBytes(charset)[i];
}
//对文件内容进行按位运算
for (i = ; i < streamContent.length; i++) {
check_ASCII ^= streamContent[i]; //先运算校验码
streamContent[i] ^= mask_ASCII; //再按位与或运算
}
byte[] check_asciis = new byte[];
//System.out.print(Integer.toBinaryString(check_ASCII));
byte check_ASCIIchar = (byte) check_ASCII;
String checkstr = Integer.toHexString(check_ASCIIchar);
if (checkstr.length() == ) {
checkstr = "" + checkstr;
}
check_asciis = checkstr.getBytes();
//添加校验码
streamContent[streamContent.length - ] = check_asciis[];
streamContent[streamContent.length - ] = check_asciis[];
//输出到目标文件
return Base64.encodeBase64String(streamContent); }
/**
*
* @param src
* @return
*/
public static String decrypt(String src) { int mask_ASCII = 0X6D; //运算掩码
int check_ASCII = 0X9C; //校验码初始值 int i = ; byte[] streamContent = Base64.decodeBase64(src); // //对文件内容进行按位运算
for (i = ; i < streamContent.length - ; i++) {
streamContent[i] ^= mask_ASCII; //先按位与或运算
check_ASCII ^= streamContent[i]; //再运算校验码 } byte[] check_asciis = new byte[];
byte check_ASCIIchar = (byte) check_ASCII;
String checkstr = Integer.toHexString(check_ASCIIchar);
if (checkstr.length() == ) {
checkstr = "" + checkstr;
}
check_asciis = checkstr.getBytes();
//添加校验码
streamContent[streamContent.length - ] = check_asciis[];
streamContent[streamContent.length - ] = check_asciis[];
if (check_asciis[] != streamContent[streamContent.length - ]
|| check_asciis[] != streamContent[streamContent.length - ]) { return null;
}
//输出到目标文件
String dest = new String(streamContent,charset);
dest = dest.substring(, dest.length() - );
return dest;
} }

Base64加密算法的更多相关文章

  1. Base64加密算法封装

    /// <summary>/// 实现Base64加密解密/// </summary>public sealed class Base64{/// <summary> ...

  2. 【字符编码】字符编码 && Base64编码算法

    一.前言 在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法 ...

  3. JavaScript Base64加解密

    Base64加密算法是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信 ...

  4. IOS常见的加密方法,常用的MD5和Base64

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  5. 使用Apache commons-codec Base64实现加解密(转)

    commons-codec是Apache下面的一个加解密开发包 官方地址为:http://commons.apache.org/codec/ 官方下载地址:http://commons.apache. ...

  6. 第二章 Base64与URLBase64

    2.1.算法基本规则: 加密的算法公开 加密的密钥不公开 Base64算法公开.密钥也公开的特性不符合基本算法规则,所以很容易被破解,所以一般不用于企业级的加密操作. 注意:具体的算法与密钥(对于Ba ...

  7. Base64和3DES算法

    Base64加密算法 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.它的优点是算法效率高,编码出来的结果比较简短,同时也具有不可读性. ...

  8. 《PHP 实现 Base64 编码/解码》笔记

    前言 早在去年 11 月底就已经看过<PHP 实现 Base64 编码/解码>这篇文章了,由于当时所掌握的位运算知识过于薄弱,所以就算是看过几遍也是囫囵吞枣一般,不出几日便忘记了其滋味. ...

  9. Shade勒索病毒 中敲诈病毒解密 如 issbakev9_Data.MDF.id-A1E.f_tactics@aol.com.xtbl 解决方法

    [客户名称]:福建福州市某烘焙连锁企业 [软件名称]:思迅烘焙之星V9总部 [数据库版本]:MS SQL server 2000  [数据库大小]:4.94GB [问题描述]:由于客户服务器安全层薄弱 ...

随机推荐

  1. iOS项目开发优秀文章汇总

    UI界面 iOS和Android 界面设计尺寸规范  http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范  http://www. ...

  2. 详解Linux系统中的文件名和文件种类以及文件权限

    Linux文件种类与副文件名 一直强调一个概念,那就是:任何装置在Linux底下都是文件, 不仅如此,连资料沟通的介面也有专属的文件在负责-所以,你会瞭解到,Linux的文件种类真的很多- 除了前面提 ...

  3. 微信小程序选择器

  4. Java中List集合的常用方法

    List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. 这篇文章就不讲继承Collection接口的那些方法了 https://www.cnblo ...

  5. java 实现JSON数据格式化

    关键在于好的算法这个代码来源于网络,算法已在注释中添加. 工具地址: 链接:https://pan.baidu.com/s/1Ns3cqi0SG3qSqatrZBrl4A 提取码:2enp 复制这段内 ...

  6. d3.js学习笔记(五)——将数据结构化为D3.js可处理的

    目标 在这一章,你将会理解如何对数据进行结构化,来更好的使用D3.js. 我们将会回顾我们之前已经学习的,学习D3.js如何使用选集(selections),JavaScript对象基础,以及如何最优 ...

  7. Tomcat中HTTP与AJP区别

    Tomcat: HTTP与AJP区别 Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户. 默 ...

  8. 不合法的请求字符,不能包含\uxxxx格式的字符

    不合法的请求字符,不能包含\uxxxx格式的字符 ,不支持数组转json_encode()格式, 需要直接将数组,拼合成 json格式 ** * 微信api不支持中文转义的json结构 * @para ...

  9. 装饰类——wpf

    decorator:在元素“周围”设置外边框.背景或者二者. adorner:在已存在的Visual  “之上”叠加Visual. AdornerDecorator:为可视化树中其下面的元素提供一个装 ...

  10. iOS-沙盒路径

    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.documents,tmp,app,Library.(NSHomeDirectory() ...