美文网首页
密码学之01Base64编码

密码学之01Base64编码

作者: EricLihuifeng | 来源:发表于2017-08-31 10:54 被阅读25次

密码学概述

  1. 密码学基本功能
  • 机密性
  • 鉴别
  • 报文完整性
  • 不可否认性
  1. 基本模型
模型.png
  1. 算法分类
  • 消息编码:Base64
  • 消息摘要:MD、SHA、MAC
  • 对称加密:DES、3DES、AES
  • 非对称加密:RSA、DH密钥交换
  • 数字签名:RSASignature、DSASignature
  1. 密码学五元祖
  • (明文、密文、加密算法、加密算法、密钥
  • 密码和密钥区别
    密钥 != 密码
    密钥+规则 == 密码
    对于破解者来说,拿到密钥就等于拿到了密码。所以重点是密钥!
  1. 对称密码&非对称密码
    对称密码:加解密使用相同密钥的密码体制
    非对称密码:加解密使用不同的密钥-公钥和私钥
  2. Java中常用的类
  • 消息编码:BASE64Encoder、BASE64Decoder
  • 消息摘要:MessageDigest
  • 对称加密:KeyGenerator、SecretKey、Cipher
  • 非对称密码:KeyPairGenerator、KeyFactory、KeyPair、PublicKey、PrivateKey、Cipher
  • 数字签名:Signature

Base64算法编程使用

  • Base64工具类
import java.io.IOException;

import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;

public class Base64Util {
    
    public static String encryptBase64(byte[] data){
        return new BASE64Encoder().encode(data);
    }
    
    public static String decryptBase64(String data) throws IOException{
        byte[] resultBytes = new BASE64Decoder().decodeBuffer(data);
        return new String(resultBytes);
    }
}

/*
 * --"JDK"
 * --Commons Codec
 * --Bouncy Castle
 */
  • 使用和输出结果如下:
public class Base64 {
    public static final String DATA = "Eric Base64";
    public static void main(String[] args) throws Exception {
        /* Test Base64 */
        String base64Result = Base64Util.encryptBase64(DATA.getBytes());
        System.out.println(DATA + "  >>>Base64编码>>>" + base64Result);
        String base64String = Base64Util.decryptBase64(base64Result);
        System.out.println(base64Result + "  >>>Base64解码>>>" + base64String);
    }
}

输出结果:
Eric Base64  >>>Base64编码>>>RXJpYyBCYXNlNjQ=
RXJpYyBCYXNlNjQ=  >>>Base64解码>>>Eric Base64

相关文章

网友评论

      本文标题:密码学之01Base64编码

      本文链接:https://www.haomeiwen.com/subject/vxzfjxtx.html