- 浏览: 471762 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
import java.util.BitSet; public class Base64 { static String base64Tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; public static byte[] baseEncoding(byte[] sc) { int srcLength ; srcLength = sc.length ; if(srcLength>3 || srcLength<1) return null ; byte rc[] ; byte t1, t2, t3, t4, t5, t6 ; byte tt1, tt2, tt3, tt4, tt5, tt6 ; byte b1 = (byte)0xFC ; byte b2 = (byte)0x03 ; byte b3 = (byte)0xF0 ; byte b4 = (byte)0x0F ; byte b5 = (byte)0xC0 ; byte b6 = (byte)0x3F ; rc = new byte[srcLength+1] ; switch(srcLength) { case 1 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[0] & b2) ; tt1 = bitMove(t1, 2) ; tt2 = (byte)(t2 << 4) ; rc[0] = tt1 ; rc[1] = tt2 ; break ; case 2 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[0] & b2) ; t3 = (byte)(sc[1] & b3) ; t4 = (byte)(sc[1] & b4) ; tt1 = bitMove(t1, 2) ; tt2 = (byte)(t2 << 4) ; tt3 = bitMove(t3, 4) ; tt4 = (byte)(t4 << 2) ; rc[0] = tt1 ; rc[1] = (byte)(tt2 | tt3) ; rc[2] = tt4 ; break ; case 3 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[0] & b2) ; t3 = (byte)(sc[1] & b3) ; t4 = (byte)(sc[1] & b4) ; t5 = (byte)(sc[2] & b5) ; t6 = (byte)(sc[2] & b6) ; tt1 = bitMove(t1, 2) ; tt2 = (byte)(t2 << 4) ; tt3 = bitMove(t3, 4) ; tt4 = (byte)(t4 << 2) ; tt5 = bitMove(t5, 6) ; tt6 = (byte)(t6) ; rc[0] = tt1 ; rc[1] = (byte)(tt2 | tt3) ; rc[2] = (byte)(tt4 | tt5) ; rc[3] = tt6 ; break ; } return rc ; } public static byte[] baseDecoding(byte[] sc) { int srcLength ; srcLength = sc.length ; if(srcLength>4 || srcLength<2) return null ; byte rc[] ; byte t1, t2, t3, t4, t5, t6 ; byte tt1, tt2, tt3, tt4, tt5, tt6 ; byte b1 = (byte)0x3F ; byte b2 = (byte)0x30 ; byte b3 = (byte)0x0F ; byte b4 = (byte)0x3C ; byte b5 = (byte)0x03 ; byte b6 = (byte)0x3F ; rc = new byte[srcLength-1] ; switch(srcLength) { case 2 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[1] & b2) ; tt1 = (byte)(t1 << 2) ; tt2 = bitMove(t2, 4) ; rc[0] = (byte)(tt1 | tt2) ; break ; case 3 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[1] & b2) ; t3 = (byte)(sc[1] & b3) ; t4 = (byte)(sc[2] & b4) ; tt1 = (byte)(t1 << 2) ; tt2 = bitMove(t2, 4) ; tt3 = (byte)(t3 << 4) ; tt4 = bitMove(t4, 2) ; rc[0] = (byte)(tt1 | tt2) ; rc[1] = (byte)(tt3 | tt4) ; break ; case 4 : t1 = (byte)(sc[0] & b1) ; t2 = (byte)(sc[1] & b2) ; t3 = (byte)(sc[1] & b3) ; t4 = (byte)(sc[2] & b4) ; t5 = (byte)(sc[2] & b5) ; t6 = (byte)(sc[3] & b6) ; tt1 = (byte)(t1 << 2) ; tt2 = bitMove(t2, 4) ; tt3 = (byte)(t3 << 4) ; tt4 = bitMove(t4, 2) ; tt5 = (byte)(t5 << 6) ; tt6 = (byte)(t6) ; rc[0] = (byte)(tt1 | tt2) ; rc[1] = (byte)(tt3 | tt4) ; rc[2] = (byte)(tt5 | tt6) ; break ; } return rc ; } public static byte bitMove(byte sbyte, int count) { BitSet abit = new BitSet(8) ; byte rbyte = (byte)0x00 ; byte bits[] ; bits = new byte[8] ; bits[0] = (byte)0x80 ; bits[1] = (byte)0x40 ; bits[2] = (byte)0x20 ; bits[3] = (byte)0x10 ; bits[4] = (byte)0x08 ; bits[5] = (byte)0x04 ; bits[6] = (byte)0x02 ; bits[7] = (byte)0x01 ; for(int i=0;i<8;i++) { if(i<count) { abit.clear(i) ; continue ; } if(((byte)(sbyte & bits[i-count])) == bits[i-count]) { abit.set(i) ; } else { abit.clear(i) ; } } for(int i=0;i<8;i++) { if(abit.get(i)) rbyte = (byte)(rbyte | bits[i]) ; } return rbyte ; } /** * Base64 encoding */ public static String encode(byte[] srcBytes) { int count; int numb; byte tBytes[]; byte tmpBytes[]; //String tChars; String rtnStr; count = 0; rtnStr = ""; while(true) { if(srcBytes.length < (count + 3)) { numb = srcBytes.length % 3; } else { numb = 3; } tBytes = new byte[numb]; for(int i = 0; i < numb; i++) { tBytes[i] = srcBytes[count + i]; } //tChars = new String(tBytes); // 得出base64 bit的演算结果 tmpBytes = baseEncoding(tBytes); //.getBytes(); for(int i = 0; i < tmpBytes.length; i++) { rtnStr += base64Tab.charAt(tmpBytes[i]); } count += 3; // 用等号填充最后的空格 if(numb < 3) { for(int i = 0; i < (3 - numb); i++) { rtnStr += "="; } break; } if(count == srcBytes.length) { break; } } return rtnStr; } /** * Base64 decoding */ public static byte[] decode(String encStr) { int cnt=0; int idx; int numb; int count; byte encBytes[]; byte fBytes[]; byte bufBytes[] = new byte[10240]; byte decBytes[]; count = 0; encBytes = encStr.getBytes(); while(true) { if(encBytes.length < (count + 4)) { numb = encBytes.length % 4; } else { numb = 4; } fBytes = new byte[numb]; for(int i = 0; i < numb; i++) { idx = getTabIndex(encBytes[count + i]); if(idx == -1) { return null; } if(idx == 64) { byte[] tmpBytes = new byte[4]; tmpBytes = fBytes; fBytes = new byte[i]; for(int j = 0; j < i; j++) { fBytes[j] = tmpBytes[j]; } break; } fBytes[i] = (byte)idx; } decBytes = baseDecoding(fBytes); if( decBytes == null) return null; for(int i = 0; i < decBytes.length; i++) { bufBytes[cnt++] = decBytes[i]; } count += 4; if(numb < 4 || count == encBytes.length) { break; } } byte rtnBytes[] = new byte[cnt]; System.arraycopy(bufBytes, 0, rtnBytes, 0, cnt); return rtnBytes; } private static int getTabIndex(byte b) { if(b >= 65 && b <= 90) { return (b - 65); } if(b >= 97 && b <= 122) { return (b - 97 + 26); } if(b >= 48 && b <= 57) { return (b - 48 + 52); } switch(b) { case '+': return 62; case '/': return 63; case '=': return 64; } return -1; } public static void main(String[] args) { String encrypted_pass = "7f92d9af-8468-4ee6-a74c-81ba7ef653e8"; String encodeStr = new String(Base64.encode(encrypted_pass.getBytes()) ) ; System.out.println(" encoded " + encodeStr + "encoded length" + encodeStr.length()); String decodeStr = new String(Base64.decode(encodeStr)) ; System.out.println(" decoded " + decodeStr ); } }
发表评论
-
javascript 打印指定区域
2010-11-18 16:34 1603javascript网页html 打印指定区域在一张网页里面, ... -
MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装
2010-10-26 14:27 1567MyEclipse 8.5 开发环境配置,汉化,Aptana2 ... -
java读取properties文件
2010-10-11 13:43 781使用J2SE API读取Properties文件的六种方法 1 ... -
dbcp基本配置和重连配置
2010-09-28 09:29 2680最近在看一些dbcp的相 ... -
JAVA实现文件转移
2010-09-28 09:26 962/** * //1.从旧文件拷贝内容到新文件 ... -
Properties读取类
2010-09-25 14:06 983package cn.feigme.util; ... -
JAVA读写ftp
2010-09-21 16:41 3559import java.io.DataInputStream; ... -
apache tomcat mysql负载均衡和集群
2010-09-14 10:30 1708前言:公司开发了一个网站,估计最高在线人数是3万,并发人数最多 ... -
Flash Builder 4 正式版序列号
2010-09-01 15:51 4012江湖上又出现新的FlashBuilder(Flex4)序列号: ... -
利用 org.apache.commons.io.FileUtils快速读写文件
2010-08-17 10:33 2742利用 org.apache.commons.io.FileUt ... -
netbeans常用快捷键
2010-08-10 16:26 9251、Application应用程序的 ... -
ERWIN7.1注册码
2010-06-23 12:15 1376终于找到ERWIN7.1注册码,也可在ERWIN7.2上注册。 ... -
Java压缩文件zip
2010-06-21 09:42 1157可以使用jdk提供的java.util.zip包的类来进行文件 ... -
文件资源操作
2010-06-16 21:52 11031.访问文件资源 假设有一个文件地位于 ... -
Java Regex To Use
2010-06-16 21:46 821Java代码 /** * 得到 ... -
Java Random and Java Disabuse
2010-06-16 21:46 1145一、Random 1、创建Random ... -
java 线程池
2010-06-16 21:44 11721)threadpool.xml Java代码 ... -
使用ThreadLocal,隔离多个线程之间的共享冲突
2010-06-16 21:29 1561早在Java 1.2推出之时,Java平台中就引入了一个新的 ... -
MyEclipse下开发Web Service
2010-06-16 21:28 1539开发环境 Sun Java 5+ ... -
jexcel使用
2010-06-16 21:23 1470Java代码 package excel.jx ...
相关推荐
【标题】:BASE64加密解密 在计算机科学中,BASE64是一种常见的数据编码方式,用于将二进制数据转换为可打印的ASCII字符序列。这种编码方法广泛应用于电子邮件系统、网络传输以及文件存储等领域,因为它可以将任何...
总的来说,C#中的Base64加密解密提供了简单且安全的方法来处理二进制数据,特别是在需要在文本环境(如邮件、网页)中传输时。在WinForm应用中,开发者可以结合UI设计,创建用户友好的工具,方便地进行Base64编码和...
Java Base64加密解密方法工具类
以下是对Base64加密解密的详细讲解以及如何在C# WinForm应用中实现。 首先,理解Base64的基本原理。Base64使用64个不同的字符(包括大小写字母、数字以及"+"和"/")来表示二进制数据,每个字符代表6位二进制数。...
在Java编程中,图片Base64加密解密是一种常见的数据处理技术,特别是在网络传输和存储时,由于Base64编码可以将二进制数据转换为可打印的ASCII字符,因此非常适用。`sun.misc.BASE64Encoder`和`sun.misc.BASE64...
在微信小程序中实现AES ECB Base64加密解密,你需要以下步骤: 1. 引入加密库:微信小程序提供了`wx.request`方法来调用外部API,你可以引入第三方加密库,如`crypto-js`,通过npm安装后将其添加到项目中。 2. ...
总结,虽然SQL Server 2005本身并不提供内置的Base64加密解密功能,但通过创建自定义函数,我们可以实现类似的功能。需要注意的是,上述函数仅适用于简单场景,对于更复杂的需求,可能需要更完善的Base64编码解码...
LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...
在这个场景中,我们讨论的是一个纯JavaScript实现的Base64加密解密工具类,它无需依赖其他外部JavaScript库,因此非常适合在各种环境中使用,特别是对于那些对文件大小和加载速度有严格要求的项目。 Base64加密,也...
非常实用的Base64加密,解密角本。基于UTF8,支持中文加解密。
总结来说,C#的Base64加密解密工具提供了对二进制数据的简单编码和解码,方便在各种环境中传递和存储数据。源码的分析有助于开发者理解和掌握这一基础但实用的技术,进一步提高编程能力。在使用过程中,注意正确处理...
下面,我们将深入探讨Base64加密解密的原理和实现: 1. **Base64编码原理**:Base64编码将每3个字节的二进制数据(24位)转化为4个6位的二进制数,然后将这6位转换为对应的Base64字符。如果原始数据不是3的倍数,会...
本文将详细探讨如何在Hive中自定义User Defined Function(UDF)来实现Base64的加密和解密。 首先,我们需要了解Base64的基本原理。Base64是一种将任意二进制数据转化为ASCII字符集的方法,它通过将每3个字节转换为...
下面,我们将深入探讨Base64加密解密的基本原理、用途以及如何使用工具进行操作。 1. Base64的基本原理 Base64是基于64个可打印字符来表示二进制数据的编码方法。这64个字符包括大小写字母(A-Z, a-z)、数字(0-9...
"Base64加密解密工具"是专门针对这种编码方式进行设计的实用程序,能够帮助用户便捷地对数据进行Base64编码或解码。 Base64编码的基本原理是将每3个字节(24位)的数据转换为4个6位的Base64字符,这样每个64字符的...
标题提到的"Base64加密解密封装"是指将Base64编码和解码的逻辑进行封装,以方便在项目中复用。封装通常包括创建类或方法,提供接口供其他部分的代码调用,实现加密和解密功能。这种封装能提高代码的可读性和可维护性...
总之,Java提供了方便的`java.util.Base64`工具类来处理Base64编码和解码,使得在Java项目中实现Base64加密解密变得简单且高效。这个基础的加密解密机制虽然简单,但在很多场景下已经足够满足基本的数据保护需求。
Base64是一种常见的数据编码方式,它将...总的来说,通过理解和掌握C#中的Base64加密解密,你可以更好地处理二进制数据的传输和存储问题。这个VS2015的Demo提供了一个很好的起点,帮助开发者快速上手并应用于实际项目。