密码学杂谈
<h5>base64:</h5>
<pre><code>package com.example.wuji.jiami;
/**
 * Base64不是加密算法 是可读性算法
 * 有64个字符组成
 * A-Z 26 a-z 26 / = 2个 一共 64
 *
 * 还有Base58 没有I i 0 o / =
 */
public class Base64 {
    public static void main(String[] args) {
    }
}
</code></pre>
<h5>字符阿斯玛值:</h5>
<pre><code>package com.example.wuji.jiami;
public class ByteBit {
    public static void main(String[] args) {
        String a = "3";
        //cccc(a);
        String b = "a";
        //cccc(b);
        //一个汉字在UTF-8编码格式下占三个字节 故数组长度是3 打印三个byte码值
        String c = "金";
        cccc(c);
    }
    public static void cccc(String a) {
        byte[] arr = a.getBytes();
        for (byte b : arr) {
            System.out.println("对应的码表值为:" + b);
            //数字转换为二进制
            String b_bit = Integer.toBinaryString(b);
            System.out.println("对应的位:" + b_bit);
        }
    }
}
</code></pre>
<h5>消息摘要:</h5>
<pre><code>package com.example.wuji.jiami;
import com.sun.org.apache.xml.internal.security.utils.Base64;
import java.security.MessageDigest;
/**
 * 消息摘要
 */
public class DigestDemo {
    public static void main(String[] args) throws Exception {
        String string="aa";
        String key="MD5";
        MessageDigest ss = MessageDigest.getInstance(key);
        byte[] sss = ss.digest(string.getBytes());
        StringBuilder stringBuilder=new StringBuilder();
        for (byte b : sss) {
            //吧秘文转化为十六进制
            String bb = Integer.toHexString(b & 0xff);
            //如果是密文长度是1的话 高位补零
            if(bb.length()==1){
                bb="0"+bb;
            }
            stringBuilder.append(bb);
        }
        System.out.println(Base64.encode(sss));
        System.out.println(stringBuilder.toString());
    }
}
</code></pre>