Base64加密算法
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加密算法的更多相关文章
- Base64加密算法封装
/// <summary>/// 实现Base64加密解密/// </summary>public sealed class Base64{/// <summary> ...
- 【字符编码】字符编码 && Base64编码算法
一.前言 在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法 ...
- JavaScript Base64加解密
Base64加密算法是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信 ...
- IOS常见的加密方法,常用的MD5和Base64
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- 使用Apache commons-codec Base64实现加解密(转)
commons-codec是Apache下面的一个加解密开发包 官方地址为:http://commons.apache.org/codec/ 官方下载地址:http://commons.apache. ...
- 第二章 Base64与URLBase64
2.1.算法基本规则: 加密的算法公开 加密的密钥不公开 Base64算法公开.密钥也公开的特性不符合基本算法规则,所以很容易被破解,所以一般不用于企业级的加密操作. 注意:具体的算法与密钥(对于Ba ...
- Base64和3DES算法
Base64加密算法 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息.它的优点是算法效率高,编码出来的结果比较简短,同时也具有不可读性. ...
- 《PHP 实现 Base64 编码/解码》笔记
前言 早在去年 11 月底就已经看过<PHP 实现 Base64 编码/解码>这篇文章了,由于当时所掌握的位运算知识过于薄弱,所以就算是看过几遍也是囫囵吞枣一般,不出几日便忘记了其滋味. ...
- Shade勒索病毒 中敲诈病毒解密 如 issbakev9_Data.MDF.id-A1E.f_tactics@aol.com.xtbl 解决方法
[客户名称]:福建福州市某烘焙连锁企业 [软件名称]:思迅烘焙之星V9总部 [数据库版本]:MS SQL server 2000 [数据库大小]:4.94GB [问题描述]:由于客户服务器安全层薄弱 ...
随机推荐
- m2eclipse插件——添加依赖不显示搜索结果
使用Eclipse,安装m2eclipse插件之后,选中Maven项目的pom文件,添加依赖,点击“Add Dependency”的时候,输入要检索的jar包名称,search result却一直为空 ...
- LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2
题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...
- BZOJ 3329 Xorequ:数位dp + 矩阵快速幂
传送门 题意 现有如下方程:$ x \oplus 3x = 2x $ 其中 $ \oplus $ 表示按位异或. 共 $ T $ 组数据,每组数据给定正整数 $ n $,任务如下: 求出小于等于 $ ...
- 完全卸载gitlab
完全卸载删除gitlab 2017年5月29日 wuhao 暂无评论 4,089次浏览 完全卸载删除gitlab 1.停止gitlab 1 gitlab-ctl stop 2.卸载gitlab ...
- saltstack技术入门与实践
基本原理 SaltStack 采用`C/S`模式,server端就是salt的master,client端就是minion,minion与master之间通过`ZeroMQ`消息队列通信. minio ...
- 19-THREE.JS 深度材质
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- Solr快速入门
1. 什么是Solr Solr是基于lucene的全文检索服务器.不同于lucene工具包,solr是一个web应用,运行在servlet容器,屏蔽了底层细节,并对外提供服务. 点我lucene快速入 ...
- flask bootstrap IE11的 兼容性问题
在子模板内添加如下代码确保IE11的兼容性问题. {% extends 'bootstrap/base.html' %}{% block metas %} <meta http-equiv=&q ...
- Four-operations: 使用node.js实现四则运算程序
一. 项目基本信息 项目成员: 陈旭钦, 郭鹏燕 项目仓库: https://github.com/Yanzery/Four-operations 二. PSP2.1表格 PSP2.1 Persona ...
- 用同步的方式执行jQuery异步动画
在编写jQuery动画时,通过回调函数进行动画队列的编排,但当回调过多,往往会出现这样的代码: $(".box1").fadeIn(1000,function(){ $(" ...