Base64编码

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;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值