Base64编码

来源:互联网 发布:mac 查看php版本 编辑:程序博客网 时间:2024/06/15 20:52

Base64密码加解密的学习

密码学的基本功能

  1. 机密性
  2. 鉴别
  3. 报文的完整性
  4. 不可否认性

基本模型

加密基本模型

密码学的分类

  1. 消息编码:Base64
  2. 消息摘要:MD类、SHA类、MAC
  3. 对称密码:DES、3DES、AES
  4. 非对称加密:RSA、DH密钥交换
  5. 数字签名:RSASignature、DSASignature

密码学五元组

明文、密文、加密算法、解密算法、密钥
其中加密算法和解密算法是公开的,密码的强度依赖于密钥。

密钥与密码的区别

密码 != 密钥
key != password
密钥 + 规则 = 密码
对于密码破解者而言,拿到了密钥就等于有了密码!
如下,AES加密算法是公开的,但是重点在密钥:
AES加密密钥:123456
password >>> AES加密 >>> U2FsdGVkX19/Q43kbdBxoKUMB1IJKRg34QaBJxcEyao=
U2FsdGVkX19/Q43kbdBxoKUMB1IJKRg34QaBJxcEyao= >>> AES解密 >>> password
而当你更换了加密密钥之后,再进行解密此时你将得不到原来的密码了。

对称密码与非对称密码

对称密码:加解密使用相同的密码机制
非对称密码:加解密使用不同的密钥——公钥与私钥

Java编程中常用的类

  1. 消息编码
    BASE64Encoder、BASE64Decoder
  2. 消息摘要
    MessageDigest
  3. 对称密码
    KeyGenerator、SecretKey、Cipher
  4. 非对称密码
    KeyPairGenerator、KeyFactory、keyPair、PublicKey、PrivateKey、Cipher
  5. 数字签名
    Signature

Base64算法的编程使用

  1. Base64编码示例
    密文:ZmFuY2hlbg==
    明文:fanchen
  2. Base64算法的定义
    Base64是一种基于64个字符的编码算法,以任意的8位字节序列组合的描述形式,这种形式不易直接识别。经过Base64编码后的字符串的字符数是以4为单位的整数倍。

    附上Base64的百度百科

Base64编程使用

1). 加密
byte[] data = “fanchen”.getBytes();
String result = new BASE64Encoder().encode(data);

2). 解密
byte[] result = new BASE64Decoder().decodebuffer(data);

import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import java.io.IOException;/** * created by chen * on 2017/9/22 17:47 */public class Base64 {    /**     * 获得经过Base64加密的字符串     * @param source 待加密的字符串     * @return  加密后的字符串     */    public static String getEncrypt(String source){        return new BASE64Encoder().encode(source.getBytes());    }    /**     * 得到解密后的数据     * @param source  待解密的字符串     * @return  解密后的字符串     */    public static String getDecode(String source){        try {            return new String(new BASE64Decoder().decodeBuffer(source));        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}
原创粉丝点击