`
yuxiang2004
  • 浏览: 26120 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Base64<3>

    博客分类:
  • java
阅读更多
for (int i = 0, j = 0; i < (data.length() - 4); i += 4, j += 3) {
                b1 = decodingTable[data.charAt(i)];
                b2 = decodingTable[data.charAt(i + 1)];
                b3 = decodingTable[data.charAt(i + 2)];
                b4 = decodingTable[data.charAt(i + 3)];
                bytes[j] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[j + 1] = (byte) ((b2 << 4) | (b3 >> 2));
                bytes[j + 2] = (byte) ((b3 << 6) | b4);
            }
            if (data.charAt(data.length() - 2) == '=') {
                b1 = decodingTable[data.charAt(data.length() - 4)];
                b2 = decodingTable[data.charAt(data.length() - 3)];
                bytes[bytes.length - 1] = (byte) ((b1 << 2) | (b2 >> 4));
            } else if (data.charAt(data.length() - 1) == '=') {
                b1 = decodingTable[data.charAt(data.length() - 4)];
                b2 = decodingTable[data.charAt(data.length() - 3)];
                b3 = decodingTable[data.charAt(data.length() - 2)];
                bytes[bytes.length - 2] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[bytes.length - 1] = (byte) ((b2 << 4) | (b3 >> 2));
            } else {
                b1 = decodingTable[data.charAt(data.length() - 4)];
                b2 = decodingTable[data.charAt(data.length() - 3)];
                b3 = decodingTable[data.charAt(data.length() - 2)];
                b4 = decodingTable[data.charAt(data.length() - 1)];
                bytes[bytes.length - 3] = (byte) ((b1 << 2) | (b2 >> 4));
                bytes[bytes.length - 2] = (byte) ((b2 << 4) | (b3 >> 2));
                bytes[bytes.length - 1] = (byte) ((b3 << 6) | b4);
            }
            return bytes;
        }
        private static byte[] discardNonBase64Bytes(byte[] data) {
            byte[] temp = new byte[data.length];
            int bytesCopied = 0;
            for (int i = 0; i < data.length; i++) {
                if (isValidBase64Byte(data[i])) {
                    temp[bytesCopied++] = data[i];
                }
            }
            byte[] newData = new byte[bytesCopied];
            System.arraycopy(temp, 0, newData, 0, bytesCopied);
            return newData;
        }
        private static String discardNonBase64Chars(String data) {
            StringBuffer sb = new StringBuffer();
            int length = data.length();
            for (int i = 0; i < length; i++) {
                if (isValidBase64Byte((byte) (data.charAt(i)))) {
                    sb.append(data.charAt(i));
                }
            }
            return sb.toString();
        }
        private static boolean isValidBase64Byte(byte b) {
            if (b == '=') {
                return true;
            } else if ((b < 0) || (b >= 128)) {
                return false;
            } else if (decodingTable[b] == -1) {
                return false;
            }
            return true;
        }
分享到:
评论

相关推荐

    Blue Magic Board Plus! v2.1 Beta 1

    + 论坛邮件采用 Base 64 + UTF-8 格式发送&lt;br&gt; 7. + 快速跳转版块菜单&lt;br&gt; 8. + 快速选择风格&lt;br&gt; 9. + 用户可选择是否使用可视化发帖器&lt;br&gt; 10. + 可设置是否允许某用户组用户看到隐身用户&lt;br&gt; 11. + 可设置是否...

    zxing生成二维码,图片Base64编码

    3. Base64编码:使用Java 8及以上版本提供的`java.util.Base64`工具类对字节数组进行编码。 结合以上步骤,我们可以编写一个完整的程序,实现ZXing生成二维码并进行Base64编码的功能。这个程序可能包含一个主函数,...

    基于itext7+freemarker模板导出pdf

    Map&lt;String, Object&gt; data = new HashMap&lt;&gt;(); data.put("title", "报告标题"); data.put("content", "这是报告内容..."); // 添加更多数据... ``` 步骤四:生成HTML字符串 使用FreeMarker的`Template`类加载模板...

    openssl编程

    65&lt;br&gt;12.1 BASE64编码介绍 65&lt;br&gt;12.2 BASE64编解码原理 65&lt;br&gt;12.3 主要函数 66&lt;br&gt;12.4 编程示例 66&lt;br&gt;第十三章 Openssl ASN1库 69&lt;br&gt;13.1 ASN1简介 69&lt;br&gt;13.2 DER编码 70&lt;br&gt;13.3 ASN1基本类型示例 71&lt;br&gt;...

    base64转换遇到问题解决方法

    3. 将所有的编码结果连接起来,形成最终的BASE64字符串。 使用BASE64转换的优点 使用BASE64转换有很多优点,包括: 1. 可以在网络上传输二进制数据。 2. 可以在文本文件中存储二进制数据。 3. 可以在JSON、XML、...

    Visual C++ 编程资源大全(英文控件)

    1,01.zip&lt;br&gt;Toolbar - Custom status messages and tooltips&lt;br&gt;用户状态信息与工具提示(3KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Remove system menu from floating toolbar&lt;br&gt;从浮动工具条中去除系统菜单(2KB)&lt;END&gt;&lt;br&gt;3,03....

    OpenSSL编程(三合一版).zip

    65&lt;br&gt;12.1 BASE64编码介绍 65&lt;br&gt;12.2 BASE64编解码原理 65&lt;br&gt;12.3 主要函数 66&lt;br&gt;12.4 编程示例 66&lt;br&gt;第十三章 Openssl ASN1库 69&lt;br&gt;13.1 ASN1简介 69&lt;br&gt;13.2 DER编码 70&lt;br&gt;13.3 ASN1基本类型示例 71&lt;br&gt;...

    Synapse TCP/IP Library v24一套通信类和函数库

    支持Base64和Quoted-pritable编码与解码;&lt;br&gt; 支持UUCode和XXCode解码;&lt;br&gt; …………&lt;br&gt; &lt;br&gt; 完整功能.&nbsp;&nbsp;&nbsp;&nbsp;源代码: 有 &lt;br&gt; 适用于 CB3 CB4 CB5 D2 D3 D4 D5 D6 K1&nbsp;

    解决JDK1.6下的Base64报错问题

    在Java开发过程中,有时我们可能需要使用到Base64编码,这是一种将二进制数据转换为可打印ASCII字符的机制,常用于在网络上传输或存储数据。然而,在JDK 1.6版本中,Base64相关的类并不内置在标准库中,这可能会导致...

    The Art of Assembly Language Programming

    The 80x86 MOV Instruction&lt;br&gt;4.8 - Some Final Comments on the MOV Instructions&lt;br&gt;&lt;br&gt;4.9 Laboratory Exercises&lt;br&gt;4.9.1 The UCR Standard Library for 80x86 Assembly Language Programmers&lt;br&gt;4.9.2 ...

    Visual C++ 编程资源大全(英文源码 其它)

    1,01.zip&lt;br&gt;Output&lt;br&gt;显示所有的调试信息(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Some general debugging tips&lt;br&gt;一般的调试技巧(11KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Debugging ISAPI extension&lt;br&gt;调试ISAPI扩展(4KB)&lt;END&gt;&lt;br&gt;4,04....

    Visual C++ 编程资源大全(控件 文件)

    1,ftp.ZIP &lt;br&gt;DIY一个CUTEFTP之类的程序(45KB)&lt;END&gt;&lt;br&gt;2,base64.ZIP &lt;br&gt;一个DLL文件(14KB)&lt;END&gt;&lt;br&gt;3,uueuud.ZIP &lt;br&gt;按照UUCode标准对文件进行快速编码(14KB)&lt;END&gt; &lt;br&gt;4,dssk170d.EXE &lt;br&gt;由Dolphin System公司...

    Visual C++ 编程资源大全(英文源码 系统)

    1,01.zip&lt;br&gt;Class for displaying system error messages&lt;br&gt;显示系统错误信息的一个类(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Simple Thread Class&lt;br&gt;一个简单的线程类(13KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Single Instance Program ...

    HTML元素参考手册

    64. `&lt;param&gt;`:为`&lt;object&gt;`或`&lt;embed&gt;`设置参数。 65. `&lt;pre&gt;`:以固定宽度字体显示预格式化的文本。 66. `&lt;q&gt;`:表示短引号。 67. `&lt;s&gt;`:显示删除线文本,HTML5中推荐使用`&lt;del&gt;`。 68. `&lt;samp&gt;`:表示代码...

    javabase64-1.3.1.jar

    &lt;artifactId&gt;javabase64&lt;/artifactId&gt; &lt;version&gt;1.3.1&lt;/version&gt; &lt;/dependency&gt; ``` 或者在Gradle中,可以在build.gradle文件中添加: ```groovy implementation 'com.novocode:javabase64:1.3.1' ``` 在实际应用...

    VB编程资源大全(控件 文件)

    1,ftp.ZIP &lt;br&gt;DIY一个CUTEFTP之类的程序(45KB)&lt;br&gt;2,base64.ZIP &lt;br&gt;一个DLL文件(14KB)&lt;br&gt;3,uueuud.ZIP &lt;br&gt;按照UUCode标准对文件进行快速编码(14KB) &lt;br&gt;4,docprops.ZIP &lt;br&gt;结构化存储文件接口,解压后有一个...

    VMware Workstation Pro 14导入ova报错问题解决方法(Invalid target disk adapter type pvscsi)

    openssl sha1 -binary *.ovf | openssl base64 &gt; sha1sum.txt ``` 这个命令会生成一个名为 `sha1sum.txt` 的文件,其中包含了新的 SHA1 值。 2. **替换 SHA1 值**:使用文本编辑器打开 *.mf 文件,找到对应于...

    js加载base64图片

    - **创建`&lt;img&gt;`元素**:在获取到Base64字符串后,可以创建一个新的`&lt;img&gt;`元素,并设置其`src`属性为Base64字符串。 ```javascript let imgElement = document.createElement('img'); imgElement.src = base64...

    html_5中文手册(参考学习)

    3. `&lt;a&gt;`: 定义超链接,可以链接到其他页面、文件、位置或邮箱地址。 4. `&lt;abbr&gt;`: 定义缩写或首字母缩略词,可以使用`title`属性提供完整形式。 5. `&lt;article&gt;`: 定义文档或页面中的独立内容区域,比如博客文章或...

    Html5中文手册(程序员必备手册)

    3、&lt;a&gt; 定义超链接。 4、&lt;abbr&gt; 定义缩写。 5、&lt;address&gt; 定义地址元素。 6、&lt;area&gt; 定义图像映射中的区域。 7、&lt;article&gt; 定义外部的内容。 8、&lt;aside&gt; 定义article 以外的内容。 9、&lt;audio&gt; 定义声音内容。 10、&lt;b...

Global site tag (gtag.js) - Google Analytics