首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Base64以及Md5的应用

2012-09-11 
Base64以及Md5的使用利用md5,和base64对java应用中的敏感数据进行的加密和编码。1. md5和base64在维基百科

Base64以及Md5的使用
利用md5,和base64对java应用中的敏感数据进行的加密和编码。
1. md5和base64在维基百科中的定义:
   MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。 计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。md5 运算结果是一个固定长度为128位的二进制数,经过一系列的运算得到32个16进制数。
   Base64是一种使用64基的位置计数法。它使用2的最大次方来代表仅可打印的ASCII 字符。这使它可用来作为电子邮件的传输编码。在Base64中的变量使用字符A-Z、a-z和0-9 ,这样共有62个字符,用来作为开始的64个数字,最后两个用来作为数字的符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。base64算法在维基百科里面的例子讲的很好很详细。

   link:   md5   http://zh.wikipedia.org/wiki/MD5
        base64   http://zh.wikipedia.org/wiki/Base64
2. 下面我将用代码的形式给出如何使用base64和md5算法(如果有其他的方法或者比较好的使用方式,期望同胞们不吝赐教。因为我还没有实际工作过,先谢谢了。)
注意:在Eclipse中需要将windows->preferences->Java->Compiler->Errors/Warning中的Deprecated and restricted Api下面的access rules修改为warning。这样使用sun.misc这个包下面的类就不会报错了。

package com.piedra.base64;import org.junit.After;import org.junit.Before;import org.junit.Test;public class Md5Test {private Md5 md5;private Base64 base64;@Beforepublic void init(){md5 = new Md5();base64 = new Base64();}@Testpublic void testGetDigest() {String toDigest = "just a test.";byte [] digestedValue = md5.getDigest(toDigest.getBytes());System.out.println(new String(digestedValue));}@Testpublic void testEncrypt(){String toEncrypt = "This is my password.";byte [] encrypted = md5.getDigest(toEncrypt.getBytes());String encodedPassword = base64.encode(encrypted);System.out.println(encodedPassword);}@Afterpublic void destroy(){}}


为什么用md5算法加密后又要利用base64算法进行编码:因为md5加密后得到的数据是128位的字节数组,将字节数组用base64算法加密后得到的是字符串,这样有利于在其在数据库中的存储。
(注:我工程的编译环境是JDK1.6,运行环境是JDK1.7)。

热点排行