`

Java 解析和转化 Base64位字符串的两种方案

 
阅读更多

Java解析和转化64位字符串是有两种方式的

 

1.Java API本身自带功能

2.Apache做的共同Jar文件

 

 

 

    public static String ecodeBase64(byte[] buf) {
        return (new BASE64Encoder()).encode(buf);
    }

    public static byte[] decodeBase64(String buf) {
        try {
            return (new BASE64Decoder()).decodeBuffer(buf);
        } catch (IOException e) {
        }
        return null;
    }
//apache jar
    public static String ecodeBase64_Common(byte[] buf) {
        return Base64.encodeBase64String(buf);
    }

    public static byte[] decodeBase64_Common(String buf) {
        return Base64.decodeBase64(buf);
    }

    public static String remove(String str) {
        return str.substring(0, str.length() - 1);
    }

 

对于上面两个方案,有个小问题

 

encode的时候会出现末尾出现额外字符的情况

 

我写了解决方案就是将末尾字符去掉remove方法

 

具体的问题的原因大概是java本身是127位的关系而不是128位的缘故

 

好了

 

上面代码我写了一个例子:

 

 

package com.java;

import java.io.IOException;

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

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

public class Test {

    public static void main(String[] args) {

        System.out.println(remove(ecodeBase64(decodeBase64("chenhailong"))));
        System.out.println(remove(ecodeBase64_Common(decodeBase64_Common("chenhailong"))));
    }

    public static String ecodeBase64(byte[] buf) {
        return (new BASE64Encoder()).encode(buf);
    }

    public static byte[] decodeBase64(String buf) {
        try {
            return (new BASE64Decoder()).decodeBuffer(buf);
        } catch (IOException e) {
        }
        return null;
    }

    public static String ecodeBase64_Common(byte[] buf) {
        return Base64.encodeBase64String(buf);
    }

    public static byte[] decodeBase64_Common(String buf) {
        return Base64.decodeBase64(buf);
    }

    public static String remove(String str) {
        return str.substring(0, str.length() - 1);
    }
}

 

 

 

希望对你有帮助 

 

 

 

0
0
分享到:
评论

相关推荐

    android字符串和16进制转换

    在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...

    base64,java与JavaScript实现

    Base64是一种将二进制数据转换为ASCII字符串表示形式的方法。它主要用于处理非文本数据的存储和传输,例如图像、视频等多媒体文件。由于互联网传输过程中可能会遇到只支持ASCII字符的数据通道,因此Base64编码被广泛...

    ecc_java_implement.zip_ecc_ecc java_ecc加密_ecc加密字符串

    这里特别提到了两种密文格式,即Base64编码和16位字符串格式,这表明代码可能提供了对这两种输出格式的支持。 Base64编码是一种将二进制数据转换为可打印ASCII字符的方法,常用于在网络上传输和存储非ASCII字符。16...

    BASE64Encoder.jar

    BASE64Encoder.jar 是一个Java实现的Base64编码解码工具包,它主要用于在ASCII字符串和二进制数据之间进行转换。Base64是一种网络上常见的数据编码方式,尤其在电子邮件、HTTP传输以及XML文档中广泛使用。这是因为...

    实现base64编码工具类及整套jar.zip_Base64.jar_base64 jar_jar base64_工具类及整套j

    Base64是一种在不支持二进制数据的文本环境下,用于传输和存储二进制数据的编码方式。它将任意二进制数据转换为可打印的ASCII字符序列,以确保数据的安全传输。在这个主题中,我们将深入探讨如何实现一个Base64编码...

    Base64批量加密工具

    3. **文件读写**:在批量加密文件时,我们需要使用`java.io`包中的类,如`FileInputStream`和`FileOutputStream`,来读取原始文件并写入加密后的Base64字符串到新文件中。 4. **异常处理**:在处理文件时,必须考虑...

    BASE64及GSON

    在标题提到的"BASE64及GSON"中,我们关注的是两种关键的技术:Base64编码和Google的Gson库。这两种技术在Android应用开发中扮演着重要角色,尤其是在前端与后端数据交互时。 首先,让我们来了解Base64编码。Base64...

    文件转换为Base64编码

    Base64编码是一种在互联网上常见的数据编码方式,主要用于在不支持二进制传输的环境...通过提供的"FileToBase64"文件,我们可以看到一个具体的示例,如何将一个文件内容转换为Base64字符串,并进行相应的操作和解析。

    java des.rar_base64 des_javades加解密

    Base64编码在Java中可以通过`java.util.Base64`类进行操作,提供`getEncoder`和`getDecoder`方法来编码和解码字符串。在进行DES加解密前,原始数据通常需要先用Base64编码,加密后得到的密文也需要Base64解码才能...

    短网址服务两种不同算法JAVA实现

    通常,短网址服务的核心在于将一个长URL映射到一个短的、唯一的字符串,同时能反向解析回原来的长URL。本文将深入探讨两种不同的算法实现,并以Java代码为例进行解释。 首先,我们来看第一种算法——哈希算法。哈希...

    base58-codec-1.0.0.zip

    Base58是一种非标准的字符集,常用于比特币和其他加密货币中,以表示长的数字或字母字符串,以避免与数字0、O、字母l和字母I混淆,提高可读性。这个库可能是为Java开发者提供方便的工具,让他们能够轻松地在应用程序...

    JSON和byte[]

    开发者通常使用JSON库或者内置的JSON解析器将JSON字符串转化为编程语言中的数据结构,例如在Java中可以使用`org.json`库,Python中则有内置的`json`模块。 `byte[]`在Java中代表一个字节数组,它是处理二进制数据的...

    springmvc采用freemarker动态生成带图片的word

    Base64是一种编码方法,可以将任意二进制数据转化为ASCII字符,这样就可以直接在文本中包含图片数据。在Word文档中,我们可以直接将Base64编码的字符串插入到一个特殊的HTML标签(如`<img>`)的`src`属性中,Word会...

    MD5算法,URLEncoding,Base64编码,AES,DES,DESede,RSA加密解密工具类和使用实例

    它将每3个字节转化为4个64字符集中的字符,结果字符串长度通常是原始长度的4/3。 4. **AES加密**:Advanced Encryption Standard(AES)是一种对称加密算法,具有速度快、安全性高的特点,广泛应用在数据加密中。...

    用JDOM+Base64编码存储和读取图片进XML

    Base64是一种用于将二进制数据转换为ASCII字符串的标准编码方式。这种编码方式通常用于将图片、音频、视频等二进制文件嵌入到HTML、XML或其他纯文本格式中。通过Base64编码,可以将图像数据转化为可读的文本形式,...

    Java编码摘要算法实例解析

    Java提供了`Base64`类来进行Base64编码和解码。`Base64.getEncoder().withoutPadding()`用于去除编码后的等号填充,`Base64.getDecoder().decode()`则用于解码。 对于字节数组转换为16进制字符串,这个操作在展示...

    commons-codec 1.11

    它使用字符'0'到'9'和'A'到'F'来表示每个字节的高四位和低四位,使得每个字节被表示为两个十六进制数字。 2. `decode`: 反向操作,将16进制字符串解析回其原始字节数组。这个过程需要确保输入字符串的长度是偶数,...

    rsa-aes.zip

    其次,Base64是一种用于将二进制数据编码为ASCII字符串的编码方式,常用于在电子邮件系统和其他文本环境中传输二进制数据。Base64编码将每3个字节转换为4个6位的字符,总长度为64个字符的字符集,包括大小写字母、...

    commons-codec_加解密使用方法包_codecmd5crypt_commons加密解码_

    Base64编码将每3个字节的数据转换为4个字符的字符串表示,每个字符在64个可打印字符集中。Apache Commons Codec库提供了Base64类来执行Base64编码和解码操作,这对于处理图片、PDF文件或任何非文本数据在网络上传输...

    关于验证码的生成方式

    4. **响应输出**:最后,将生成的验证码图像和对应的字符串编码(如Base64)保存在session中,然后以JPEG或PNG格式发送到客户端。 接下来,我们转向JSP生成验证码的方法。JSP(JavaServer Pages)是一种动态网页...

Global site tag (gtag.js) - Google Analytics