Java基础---MD5和BASE64

package cn.peter;

import sun.misc.BASE64Encoder;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Created by zyz on 2016-10-8.
 */
public class Md5Test {
    public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        String password="123456";
        MessageDigest md=MessageDigest.getInstance("md5");
        byte[] bMd5=md.digest(password.getBytes());
        int i;
        StringBuffer buffer=new StringBuffer("");
        for(int k=0;k<bMd5.length;k++){
            i=bMd5[k];
            if(i<0){
                i+=256;
            }
            if(i<16){
                buffer.append("0");
            }
//            System.out.println(i+"->"+Integer.toHexString(i));
            buffer.append(Integer.toHexString(i));
        }
        BASE64Encoder encoder=new BASE64Encoder();
        String strBase64=encoder.encode(password.getBytes());
        String strBase64Md5=encoder.encode(bMd5);
        System.out.println(password+" 占字符个数为:"+password.length());
        System.out.println(password+" 占的字节数为:"+password.getBytes("utf-8").length);
        System.out.println(password+" md5编码后占的字节数为:"+bMd5.length);
        System.out.println(password+" md5编码为:"+buffer.toString()+",共"+buffer.toString().length()+"个字符.");
        System.out.println(password+" Base64编码为:"+strBase64+",共"+strBase64.length()+"个字符.");
        System.out.println(password+" 的md5编码转Base64编码为:"+strBase64Md5+",共"+strBase64Md5.length()+"个字符.");

    }
}

123456 占字符个数为:6
123456 占的字节数为:6
123456 md5编码后占的字节数为:16
123456 md5编码为:e10adc3949ba59abbe56e057f20f883e,共32个字符.
123456 Base64编码为:MTIzNDU2,共8个字符.
123456 的md5编码转Base64编码为:4QrcOUm6Wau+VuBX8g+IPg==,共24个字符.

Base64编码说明
  Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

  为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

Base64编码表

码值字符   码值字符   码值字符   码值字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
原文地址:https://www.cnblogs.com/beast-king/p/5940174.html