- 浏览: 492952 次
- 性别:
- 来自: xiamen
文章分类
最新评论
-
陈乐鹏:
你这个下载要怎么玩?我这里老提示未安装!
[转]使用ScriptX控件进行Web打印总结 -
zqb666kkk:
博主有示例代码吗
cxf ws-security 加密和签名的实现 -
mclin0704:
你好,请问WSDL2Java 可以用java实现吗?
Java2WSDL之java实现 -
hubiao0629:
楼主,这个文件会有不兼容的问题把。
mysql5忘记密码后的处理方法 -
zhaoyubetter:
OK,可以试试!多谢楼主
后台管理界面收集
Base64加密算法
原理:
Base64 使用US-ASCII子集的64个字符,即大小写的26个英文字母,0-9,+,/。
编码总是基于3个字符,每个字符用8位二进制表示,因此一共24位,再分为4四组,每组6位,表示一个Base64的值。如下:
"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", "+", "/"
Base64值为0就是A,为27的就是b。这样,每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。
如,
编码只有2个字符“me”,m的ascii是109,e的是101,用二进制表示分别是01101101、01100101,连接起来就是
0110110101100101,再按6位分为一组:011011、010110、010100(不足6位补0),分别ascii分别是27、22、
20,即Base64值为bWU,Base64不足4字,用=补齐,因此bWU=就me的Base64值。
用java的按位逻辑和移位运算就可以实现该算法。但实际上,并不用我们自己去编程实现。现有实现该加密解密算法的程序很多,如javamail的MimeUtility。
实践:javamail的MimeUtility实现对字符串的加密解密
第一步,在eclipse新建一个java项目,并引进javamail.jar
第二步,在com.mascot.encrypt包下创建测试单元,注意引进javax.mail.internet.MimeUtility
package com.mascot.encrypt; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStreamReader; import javax.mail.internet.MimeUtility; public class Base64 { public static BufferedReader decode(String b64string) throws Exception { return new BufferedReader( new InputStreamReader( MimeUtility.decode( new ByteArrayInputStream( b64string.getBytes()), "base64"))); } public static void main(String args[]) throws Exception{ System.out.println(encodeAsString("hello")); System.out.println(decodeAsString("aGVsbG8=")); System.out.println(decodeAsString("aGVsbG8A")); } public static String decodeAsString(String b64string) throws Exception { if (b64string == null) { return b64string; } String returnString = decode(b64string).readLine(); if (returnString == null) { return returnString; } return returnString.trim(); } public static ByteArrayOutputStream encode(String plaintext) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] in = plaintext.getBytes(); ByteArrayOutputStream inStream = new ByteArrayOutputStream(); inStream.write(in, 0, in.length); //补0 if ((in.length % 3 ) == 1){ inStream.write(0); inStream.write(0); } else if((in.length % 3 ) == 2){ inStream.write(0); } inStream.writeTo( MimeUtility.encode(out, "base64") ); return out; } public static String encodeAsString(String plaintext) throws Exception { return encode(plaintext).toString(); } }
第三步,运行程序,结果:
aGVsbG8A
hello
hello
注意到hello的加密结果并不是aGVsbG8=,而是aGVsbG8A,这是因为程序补齐都是补0,而0对应的Base64值就是A,这是我们程序实现与上述理论不同造成的。
以上原文地址为:http://www.blogjava.net/topquan/archive/2006/10/14/75132.html
发表评论
-
Mac 安装maven
2017-03-08 23:05 465Mac OS X 安装Maven: 下载 Maven ... -
MAC 安装eclipse svn 插件
2017-03-08 22:48 649参考此链接: http://www.cnblogs.com ... -
tomcat 单机多实例
2015-07-08 09:06 839tomcat 部署单机多实例,实现每个实例都是跟 ... -
java 分块上传
2014-05-30 14:56 1437java 分块下载 java多线程分块上传并 ... -
bat class to java Jad反编译
2013-12-04 14:58 1187反编译所使用的工具是jad.exe 有时候需要批量 ... -
ant svn 自动更新和发布
2012-05-23 16:42 2341团队管理中,当项目非常多,而且发布频繁,手动发布往往非常繁琐, ... -
DatabaseMetaData getExportedKey() 无法获取信息
2012-03-14 17:26 1183在jdbc DatabaseMetaData.getExpo ... -
Column 'IS_AUTOINCREMENT' not found
2012-03-14 10:41 2465java.sql.SQLException: Column ' ... -
java 递归加减法
2012-01-12 17:30 1605有时候设计到list map 做交集,并集等操作。 可以参考 ... -
java 发送mail
2011-12-06 09:19 1519java 发送mail,很久之前整过,没做记录,这次整理下做个 ... -
java ant 压缩与解压缩
2011-09-15 16:05 2438以下本文来自: http://blog.csdn.net/l ... -
Java源码中的发现:快速判断一个int值是几位数
2011-07-22 15:57 4021判断一个int值是几位数,要是我自己实现,估计又会想到除法和模 ... -
Weblogic 部署SSL
2011-07-15 16:14 928weblogic 部署SSL 整理网路上的 一部分由 ... -
CXF客户端配置请求超时限制
2011-07-13 17:14 5123在用cxf 开发webservice应用时,客户端老报 ... -
Weblogic的基础优化!
2011-07-04 16:43 1273由于项目需要,最近研究了一下系统优化。 系统性能优化是系 ... -
判断偶数几种方法性能
2011-06-24 17:06 1349判断一个数是否偶数,在编程中经常用的,大部分人都用的是 ... -
java读取文件夹下的所有文件夹和文件
2011-05-18 10:07 1414import java.io.FileNotFoundExce ... -
ThreadLocal的使用场景
2011-04-11 17:24 1097在Java的多线程编程中,为保证多个线程对共享变量的安全访问, ... -
Java 进制之间互相转换
2011-03-30 13:34 1275public static void main(String[ ... -
B/S架构下applet,JNI实现对客户端硬件的读取
2011-03-26 10:20 1521昨天整个Applet 调用JNI 实现读取指纹的Demo,郁闷 ...
相关推荐
C语言实现Base64加密算法,通常涉及以下几个关键步骤: 1. **初始化编码表**:Base64编码表由64个不同的字符组成,包括大小写字母、数字和两个特殊符号`+`和`/`,以及一个用于填充的`=`。在C语言中,我们可以定义一...
Base64编码的核心原理是将二进制数据进行分组,每24Bit(3字节)为一个大组,再把一个大组的数据分成4个6Bit的小分组。由于6Bit数据只能表示64个不同的字符(2^6=64),所以这也是Base64的名字由来。
Base64加密算法是指一种常用的数据加密算法,主要用于将二进制数据转换为文本格式,以便于在网络上传输。Java语言提供了多种实现Base64加密算法的方式,本文将详细介绍Java实现的Base64加密算法的示例,包括JDK、...
下面我们将详细探讨Delphi中的Base64加密算法以及如何在Delphi程序中实现它。 首先,Base64的基本原理是将每3个8位字节的数据(24位)转换为4个6位的数字,然后将这4个数字用64个可能的字符(包括大小写字母、数字...
**C# BASE64加密算法** 在编程领域,特别是在网络安全和数据传输中,加密是一种基本的安全措施。BASE64是一种编码方式,它将任意二进制数据转化为ASCII字符集中的可打印字符,常用于在网络上传输包含二进制的数据,...
java代码。支持加密与解密,Base64加密算法
c++实现base64算法加密解密,不需要修改,直接运行即可
Base64加密算法java版
### Base64加密算法 #### 一、简介 Base64是一种常见的编码方式,主要用于将二进制数据转换为文本格式的数据,以便于在网络中传输。Base64编码使用了64个可打印的ASCII字符(包括大写字母A-Z、小写字母a-z、数字0-...
根据提供的文件信息,我们可以深入探讨Base64加密算法在Java中的实现原理以及具体的代码细节。 ### Base64加密算法概述 Base64是一种基于64个可打印字符来表示二进制数据的方法。它通常用于将二进制数据转换为文本...
Base64加密算法是一种常用的编码方式,广泛应用于互联网、网络通信、数据存储等领域。它的主要作用是将二进制数据转换为可读的ASCII字符串,以便于在不同的系统和平台之间进行数据交换和存储。 Base64加密算法的...
Base64 加密算法是一种常用的数据编码格式,它用于将二进制数据转换为 ASCII 码,以便在网络上传输。Base64 编码算法广泛应用于互联网、电子邮件、网页、云计算等领域。 Base64 编码原理 Base64 编码算法的原理是...
算法类base64 的操作 字符串的加密技术,算法类base64 的操作 字符串的加密技术 as 版本
Base64_RC4加密算法是计算机安全领域中常见的两种加密技术的结合。RC4是一种流密码(stream cipher)算法,而Base64则是一种数据编码方法。这两种技术在不同的场景下有着各自的用途。 首先,我们来详细了解一下RC4...
然而,它并不是一种加密算法,只是编码方式,不能防止未经授权的访问。真正的加密需要使用如AES、RSA等专门的加密算法。 使用这个jar包时,可以直接将其导入到Java项目中,通过反射或者其他方式调用`sun.misc.BASE...
总的来说,AES+BASE64加密是一种强大的数据保护手段,它结合了AES的高强度加密和BASE64的易传输特性,为数据的安全提供了可靠的保障。在实际使用时,需要注意密钥管理,确保密钥的安全存储和传递,以防止因密钥泄露...
Base64是一种简单的编码方式,常用于将二进制数据转换为ASCII字符串,以便在网络传输或者存储时不会因为特殊字符引起问题。在C#中,可以使用`System.Convert`类的`ToBase64String`和`FromBase64String`方法进行Base...
它通过特定的算法,将每3个字节(24位)的数据转换为4个6位的十六进制数,每个十六进制数对应Base64字符集中的一个字符。Base64字符集由64个字符组成,包括大小写字母、数字以及"+"和"/",最后还有一个等于号("=")...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...