`

base64

 
阅读更多

base64的java实现

public class BASE64 {
    private static final String TAG = "BASE64";
    public static final byte[] encodingTable = { (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E',
            (byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N',
            (byte) 'O', (byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 'V', (byte) 'W',
            (byte) 'X', (byte) 'Y', (byte) 'Z', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f',
            (byte) 'g', (byte) 'h', (byte) 'i', (byte) 'j', (byte) 'k', (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o',
            (byte) 'p', (byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', (byte) 'v', (byte) 'w', (byte) 'x',
            (byte) 'y', (byte) 'z', (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6',
            (byte) '7', (byte) '8', (byte) '9', (byte) '+', (byte) '/' };

    public static final byte[] decodingTable;
    static {
        decodingTable = new byte[128];
        for (int i = 0; i < 128; ++i) {
            decodingTable[i] = (byte) -1;
        }
        for (int i = 'A'; i <= 'Z'; ++i) {
            decodingTable[i] = (byte) (i - 'A');
        }
        for (int i = 'a'; i <= 'z'; ++i) {
            decodingTable[i] = (byte) (i - 'a' + 26);
        }
        for (int i = '0'; i < '9'; ++i) {
            decodingTable[i] = (byte) (i - '0' + 52);
        }

        decodingTable['+'] = 62;
        decodingTable['/'] = 63;
    }

    public static String encode(byte[] data) {
        if (data == null) {
            return "";
        }
        byte[] base64 = null;
        final int remainder = data.length % 3;
        final int len = data.length / 3;
        if (remainder == 0) {
            base64 = new byte[len * 4];
        } else {
            base64 = new byte[(len + 1) * 4];
        }
        int base;
        int a1, a2, a3;
        for (int i = 0, j = 0; i < len; ++i, j += 4) {
            base = i * 3;
            a1 = data[base] & 0xff;
            a2 = data[base + 1] & 0xff;
            a3 = data[base + 2] & 0xff;

            base64[j] = encodingTable[(a1 >>> 2) & 0x3f];
            base64[j + 1] = encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f];
            base64[j + 2] = encodingTable[((a2 << 2) | (a3 >>> 6)) & 0x3f];
            base64[j + 3] = encodingTable[a3 & 0x3f];
        }

        if (remainder == 1) {
            a1 = data[data.length - 1];

            base64[base64.length - 4] = encodingTable[(a1 >>> 2) & 0x3f];
            base64[base64.length - 3] = encodingTable[(a1 << 4) & 0x3f];
            base64[base64.length - 2] = (byte) '=';
            base64[base64.length - 1] = (byte) '=';
        } else if (remainder == 2) {
            a1 = data[data.length - 2];
            a2 = data[data.length - 1];

            base64[base64.length - 4] = encodingTable[(a1 >>> 2) & 0x3f];
            base64[base64.length - 3] = encodingTable[((a1 << 4) | (a2 >>> 4)) & 0x3f];
            base64[base64.length - 2] = encodingTable[(a2 << 2) & 0x3f];
            base64[base64.length - 1] = (byte) '=';
        }

        return new String(base64);
    }

    public static boolean isValidCharacter(byte x) {
        if ('=' == x) {
            return true;
        }
        if (x < 0 || x > 128) {
            return false;
        }
        if (decodingTable[x] == -1) {
            Logger.d(TAG, "data is not valid. decoding table x:" + x);
            return false;
        }
        return true;
    }

    public static String decode(byte[] data) {
        if (data == null) {
            return "";
        }
        Logger.d(TAG, "data is not null");
        for (int i = 0; i < data.length; ++i) {
            if (isValidCharacter(data[i]) == false) {
                return "";
            }
        }
        Logger.d(TAG, "data is valid");
        byte[] base64 = null;
        int len = data.length / 4;
        if (data[data.length - 2] == '=') {
            len = len - 1;
            base64 = new byte[len * 3 + 1];
        } else if (data[data.length - 1] == '=') {
            len = len - 1;
            base64 = new byte[len * 3 + 2];
        } else {
            base64 = new byte[len * 3];
        }

        int base;
        byte a1, a2, a3, a4;
        for (int i = 0, j = 0; i < len; ++i, j += 3) {
            base = i * 4;
            a1 = decodingTable[data[base]];
            a2 = decodingTable[data[base + 1]];
            a3 = decodingTable[data[base + 2]];
            a4 = decodingTable[data[base + 3]];

            base64[j] = (byte) ((a1 << 2) | (a2 >>> 4));
            base64[j + 1] = (byte) ((a2 << 4) | (a3 >>> 2));
            base64[j + 2] = (byte) ((a3 << 6) | a4);
        }
        if (data[data.length - 2] == '=') {
            a1 = decodingTable[data[data.length - 4]];
            a2 = decodingTable[data[data.length - 3]];
            base64[base64.length - 1] = (byte) ((a1 << 2) | (a2 >>> 4));

        } else if (data[data.length - 1] == '=') {
            a1 = decodingTable[data[data.length - 4]];
            a2 = decodingTable[data[data.length - 3]];
            a3 = decodingTable[data[data.length - 2]];
            base64[base64.length - 2] = (byte) ((a1 << 2) | (a2 >>> 4));
            base64[base64.length - 1] = (byte) ((a2 << 4) | (a3 >>> 2));
        }
        return new String(base64);
    }
}

 

 android 下使用base64:

import android.util.Base64;

编码:

String str = Base64.encodeToString(ori_str.getBytes(), Base64.DEFAULT);

解码:

byte b[]=android.util.Base64.decode(ori_str, Base64.DEFAULT);

String str=new String(b);

 

 

 

 

分享到:
评论

相关推荐

    pb9_base64_pb调用base64.dll_PB9base64_Base64.dll_glass8y6_pbbase64

    标题中的"pb9_base64_pb调用base64.dll_PB9base64_Base64.dll_glass8y6_pbbase64"涉及到的是PowerBuilder 9(简称PB9)中关于Base64编码的实现。Base64是一种用于在网络上传输二进制数据的编码方式,它将二进制数据...

    labview 图片缩放 base64编码base64解码

    在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...

    Base64.zip_labview base64

    在“Base64.zip_labview base64”这个压缩包中,包含了一个名为“Base64.vi”的虚拟仪器(VI)。这个VI是用LabVIEW编写的,目的就是提供一个纯LabVIEW环境下的Base64编码解决方案。下面我们将详细探讨如何在LabVIEW...

    base64 加解码 base64转hex Base64转图片 图片转Base64工具,比网上其它的方便好用,支持大于1M内容

    Base64是一种在互联网上广泛使用的编码方式,它将任意二进制数据转换为可打印的ASCII字符,以便在网络传输中不受限制。这种编码方法基于一个64字符的字母数字表,包括大小写字母、数字以及"+"和"/",末尾可能带有...

    Base64转二进制文件,Base64 To File

    Base64编码是一种常见的数据编码方式,主要用于在不支持二进制传输的环境中传递二进制数据。它将任意的二进制数据转化为ASCII字符序列,这样就可以在文本格式的邮件、网页源代码等场景中方便地使用。Base64编码会将3...

    BASE64图片解码_解码_vba图片base64_base64_VBa_图片_

    在Excel中使用VBA(Visual Basic for Applications)解码BASE64编码的图片是一项常见的编程任务,特别是当你需要处理从网络或数据库中获取的BASE64格式的图像数据时。BASE64是一种用于将二进制数据转换为可打印ASCII...

    VB JPG转base64和base64转JPG.rar

    这个“VB JPG转base64和base64转JPG.rar”压缩包文件包含的可能是两个VB程序,分别用于将JPG图片编码为Base64字符串和将Base64字符串解码回JPG图片。 首先,让我们深入了解一下Base64编码的原理。Base64编码将每3个...

    Base64.dll(Base64编解码,附VB示例)

    Base64编码和解码库,支持API调用和COM调用,输入参数支持VB的字节数组Byte(),输出支持VB的字节数组Byte()和...Public Declare Sub DecodeFromVBStringEx Lib "Base64" (ByRef Dest() As Byte, ByRef Src As String)

    sun.misc.BASE64Decoder(Android Base64Jar包以及Java源代码)

    sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及Java源代码 sun.misc.BASE64Decoder 其中包括 Android Base64Jar包 以及...

    Base64引入包

    Base64是一种在网络上传输和存储二进制数据时常用的数据编码方式,它将二进制数据转换为可打印的ASCII字符序列。在Java中,Base64编码主要用于处理包含二进制数据的字符串,例如图片、PDF文档或加密密钥等。Base64...

    BASE64Encoder 与 BASE64Decoder 源代码

    在Java中,`BASE64Encoder`和`BASE64Decoder`是两个核心类,分别用于对数据进行BASE64编码和解码。 `BASE64Encoder`类: 这个类在Java SDK中位于`javax.crypto`包下,主要负责将字节序列(byte array)转换为BASE...

    Android图片的Base64编码与解码及解码Base64图片方法

    在Android开发中,有时我们需要将图片转换为Base64编码的形式以便在网络传输或者存储时使用。Base64编码是一种常见的二进制数据转化为文本的方法,它通过使用64个可打印字符来表示原本的二进制数据,使得数据可以在...

    BASE64Encoder.jar

    在IT领域,Base64是一种广泛使用的编码方式,主要用于将二进制数据转换为可打印的ASCII字符,以便在网络上传输或存储。标题中的"BASE64Encoder.jar"表明这是一个Java应用程序,它提供了Base64编码的功能。描述中提到...

    Base64 编码和解码

    Base64是一种常见的数据编码方式,它将任意的二进制数据转换成可打印的ASCII字符串,以便在网络上传输或者存储。在JavaScript中,Base64编码和解码是经常用到的功能,尤其是在处理图像、JSON数据或者进行跨平台通信...

    BASE64Encoder.zip

    BASE64编码是一种常见的数据编码方式,特别是在网络通信和数据存储中广泛使用。它将任意二进制数据转换成可打印的ASCII字符序列,以便在不支持二进制传输的环境中进行传输。在这个"BASE64Encoder.zip"压缩包中包含了...

    base64包,decodeBase64包,encodeBase64String包

    在Java中,处理Base64编码和解码的库通常包含在特定的包中,比如Apache Commons Codec库。这个库提供了方便的API来执行Base64的编码和解码操作。 Apache Commons Codec是Apache软件基金会的一个开源项目,提供了一...

    C# Base64加密解密

    在IT领域,Base64是一种常见的数据编码方法,主要用于在不支持二进制传输的环境中传递数据,如电子邮件系统。C#是微软开发的一种面向对象的编程语言,广泛应用于Windows应用开发,包括WinForms应用程序。在C# ...

    JQ JS javascript 普通图片上传 图片格式转换 图片base64转换 jpg转base64 png转base64

    本文将深入探讨如何使用jQuery(JQ)、JavaScript(JS)以及base64编码技术来实现普通图片的上传、格式转换以及base64编码转换。我们将讨论jpg和png图片如何转化为base64字符串,以便在网络上传输或存储。 首先,让...

    BASE64编码转换工具

    **BASE64编码转换工具详解** 在信息技术领域,数据传输和存储时常会遇到编码转换的问题。其中,BASE64编码是一种广泛使用的编码方式,尤其在处理二进制数据转化为文本格式时,它起到了至关重要的作用。本文将深入...

    jdk1.6解决base64

    在JDK 1.6中,Sun提供了自己的Base64编码类`sun.misc.BASE64Encoder`和解码类`sun.misc.BASE64Decoder`。但这些类并不是公开的API,而是Sun内部使用的工具类。这意味着它们并不被官方文档所支持,并且可能会随着JDK...

Global site tag (gtag.js) - Google Analytics