zoukankan      html  css  js  c++  java
  • 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 /
  • 相关阅读:
    log4net(c#) 配置及使用
    【转】JMeter试用手记
    【转】性能测试工具JMeter的使用技巧
    【转】JMeter基础之——录制脚本
    【转】Jmeter基础之——jmeter基础概念
    【转】JMeter基础之——一个简单的性能测试
    【转】JMeter入门
    【转】Jmeter压力测试模拟并发
    【转】JMeter Tutorial的安装和具体操作
    【转】JMeter代理录制脚本
  • 原文地址:https://www.cnblogs.com/beast-king/p/5940174.html
Copyright © 2011-2022 走看看