base64加解密

本文详细介绍了Base64编码的概念,包括其字符集组成、编码原理及应用背景。同时,提供了三种实现Base64编码的方法:JDK实现、Commons Codec实现及Bouncy Castle实现,并附带了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Base64就是基于英文拼音(大小写各26个共52个)+数字(10个)+两个特殊字符(+/)来实现的一个替换编码。他并非是一个严格意义的加解密的算法,是一种编码的替换格式,对应的编码和值是公开的,比较容易破解,如果加上一些扰码安全性会更高一些!

实现base64加解密目前有三种办法:

第一种:JDK的实现Base64算法

BASE64Encoder encoder = new BASE64Encoder();
String encode = encoder.encode(src.getBytes());
BASE64Decoder decoder = new BASE64Decoder();

如果是jdk1.8以下,提示找不到这个   BASE64Encoder 解决办法:

https://blog.youkuaiyun.com/liu578182160/article/details/51153022
 

第二种:CC (CommonsCodes)实现的Base64算法

byte[] encodeBytes = Base64.encodeBase64(src.getBytes());
byte[] decodeBytes = Base64.decodeBase64(encodeBytes);

 

第三种:BC(BouncyCastle)实现的Base64的算法

byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.encode(src.getBytes());
byte[] decodeBytes = org.bouncycastle.util.encoders.Base64.decode(encodeBytes);

Base64算法的应用场景:e-mail;

密钥;证书文件 产生的历史原因:邮件的“历史问题”;

原因是邮件在传输一些非ASCLL码的值,在一些不同的网关或者网络会出现一些问题。

定义:基于64个字符的编码算法。RFC 2045关于Base算法的基本规范;衍生:Base16、Base32、Url Base64;

 

demo实例代码:

import java.io.IOException;

import org.apache.commons.codec.binary.Base64;

import com.sun.org.apache.bcel.internal.generic.NEW;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import sun.print.resources.serviceui;

/**
 * base64加密解密
 * @author Lenovo
 *
 */
public class Base64Demo {
    private static String src = "Hello world";
    
    public static void main(String[] args) {
        jdkBase64();
        commonCodeBase64();
    }
    
    public static void jdkBase64(){
        System.out.println("jdkBase64===============================");
        try {
            BASE64Encoder encoder = new BASE64Encoder();
            String encode = encoder.encode(src.getBytes());
            System.out.println("加密 :"+encode);
            BASE64Decoder decoder = new BASE64Decoder();
            System.out.println("解密 :"+new String(decoder.decodeBuffer(encode)));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void commonCodeBase64(){
        System.out.println("commonCodeBase64===============================");
        byte[] encodeBase64 = Base64.encodeBase64(src.getBytes());
        System.out.println("加密 :"+new String(encodeBase64));
        System.out.println("解密 :"+new String(Base64.encodeBase64(encodeBase64)));
    }
    //此jdk版本过低,jdk1.8以下不适用
    public static void bouncyCastleBase64(){
        System.out.println("bouncyCastleBase64===============================");
        byte[] encodeBase64 = org.bouncycastle.util.encoders.Base64.encoder(src.getBytes());
        System.out.println("加密 :"+new String(encodeBase64));
        System.out.println("解密 :"+new String(org.bouncycastle.util.encoders.Base64.decoder(encodeBase64)));
    }
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值