教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Java 使用 MD5 和 BASE64的示例

Java 使用 MD5 和 BASE64的示例

发布时间:2016-10-10   编辑:jiaochengji.com
教程集为您提供Java 使用 MD5 和 BASE64的示例等资源,欢迎您收藏本站,我们将为您提供最新的Java 使用 MD5 和 BASE64的示例资源
BASE64在php中也在那么md5也有今天我们来看在Java 使用 MD5 和 BASE64加密的一个操作方法 ,希望文章能够对各位带来帮助.

0X00 简介

最近经常要在代码中使用到 BASE64 编码和 MD5 加密,所以把笔记贴在这里方便自己查找。
在配置 postfix 邮件服务器的时候发现,收到的邮件正文都是使用 BASE64 编码过的,所以才了解了一下这种编码。
MD5 则是加密常用手段。虽说 MD5 细究不算加密算法,但是可以用作加密。
0X01 BASE64 编码

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2 的 6 次方等于 64,所以每 6 个比特为一个单元,对应某个可打印字符。三个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节需要用 4 个可打印字符来表示。它可用来作为电子邮件的传输编码。在 Base64 中的可打印字符包括字母 A-Z、a-z、数字 0-9,这样共有 62 个字符,此外两个可打印符号在不同的系统中而不同。一些如 uuencode 的其他编码方法,和之后 binhex 的版本使用不同的 64 字符集来代表 6 个二进制数字,但是它们不叫 Base64。 ----------- 维基百科

代码需要 import sun.misc.BASE64Encoder;
public static String encodeing(String str){
    byte[] b = null;
    String s = null;
    try{
        b = str.getBytes("utf-8");
    }catch (Exception e){
        e.printStackTrace();
    }
    if (b != null){
        s = new BASE64Encoder().encode(b);
    }
    return s;
}
0X02 BASE64 解码

代码需要import sun.misc.BASE64Decoder;
public static String decoding(String str){
        byte[] b = null;
        String result = null;
        if (str != null){
            BASE64Decoder decoder = new BASE64Decoder();
            try{
                b = decoder.decodeBuffer(str);
                result = new String(b, "utf-8");
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return result;
    }
0X03 MD5 加密

MD5 消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个 128 位(16 字节)的散列值(hash value),用于确保信息传输完整一致。MD5 由罗纳德 · 李维斯特设计,于 1992 年公开,用以替换 MD4 算法。这套算法的程序在 RFC 1321 中被加以规范。
将数据(如一段文字)运算变为另一固定长度值,是散列算法的基础原理。
1996 年后被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如 SHA-1。2004 年,证实 MD5 算法无法防止碰撞,因此无法适用于安全性认证,如 SSL 公开密钥认证或是数字签名等用途。 ----------- 维基百科

虽说 MD5 已经被证明不安全,不过用作实验性的登陆验证还是没有问题的。(其实好多好多网站的密码都是 MD5 的,不信可以去社工库里看看)
代码需要import java.security.MessageDigest;
 public static String getMd5(String text){
        try{
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(text.getBytes());
            byte b[] = md.digest();
            int i;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset ){
                i = b[offset];
                if (i < 0){
                    i = 256;
                }
                if (i < 16){
                    buf.append("0");
                }
                buf.append(Integer.toHexString(i));
            }
            return buf.toString();                      // 32位加密
            //return buf.toString().substring(8, 24);   // 16位加密
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }

您可能感兴趣的文章:

[关闭]
~ ~