android -------- Base64 加密解密算法

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

Java8.0之前,添加Jar包

Java 8之后的作法
Java 8的java.util套件中,新增了Base64的类别,可以用来处理Base64的编码与解码,用法如下:

import java.nio.charset.StandardCharsets;

public class ABase64 {

    public static void main(String[] args) {
        String password = "Hello 123456";
        //加密
        String encoded = java.util.Base64.getEncoder().encodeToString(password.getBytes(StandardCharsets.UTF_8));
        //解密
        String decoded = new String(java.util.Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(encoded);
        System.out.println(decoded);
        showBase64();
    }

    private static void showBase64() {

        try {
            final java.util.Base64.Decoder decoder = java.util.Base64.getDecoder();
            final java.util.Base64.Encoder encoder = java.util.Base64.getEncoder();
            final String text = "Hello 小笨蛋";
            final byte[] textByte = text.getBytes("UTF-8");
            //编码
            final String encodedText = encoder.encodeToString(textByte);
            System.out.println(encodedText);
            //解码
            System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

日志:

原文地址:https://www.cnblogs.com/zhangqie/p/10979739.html

时间: 2024-11-09 13:33:51

android -------- Base64 加密解密算法的相关文章

android Base64加密解密

// 加密传入的数据是byte类型的,并非使用decode方法将原始数据转二进制,String类型的数据 使用 str.getBytes()即可 String str = "Hello!"; // 在这里使用的是encode方式,返回的是byte类型加密数据,可使用new String转为String类型 String strBase64 = new String(Base64.encode(str.getBytes(), Base64.DEFAULT)); Log.i("T

Base64加密解密算法的C/C++代码实现

base64加密规则如下: Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3. 具体实现方法: 第一个字节,根据源字节的第一个字节处理. 规则:源第一字节右移两位,去掉低2位,高2位补零. 既:00 + 高6位 第二个字节,根据源字节的第一个字节和第二个字节联合处理. 规则如下,第一个字节高6位去掉然后左移四位,第二个字节右移四位 即:源第一字节

android -------- DES加密解密算法

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来.需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来. DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法.DES加密算法

base64加密解密算法

base64算法 1)解决的问题: 网络传送渠道不支持所有的字节的传输 2)定义: base64是一种基于64个可打印的字符来表示二进制数据的表示方法 3)元素: A-Za-Z0-9+/总共64个字符,这也是base64名称的由来 4)空间利用率: base64字符是8个位,但只有6位是有用的,左边的两位永远是0 5)方法: 8和6的最小公倍数是24,该算法会3个字符3个字符的解一个字符串,每3个字符用对应的四个字符(base64的64个元素表示),最后不足的位默认为0,如果6位全为0,则为=,

Java android DES+Base64加密解密

服务器与客户端加密解密传输, 中间遇到各种坑,客户端无论用AES还是DES解密时都会出现错误,后来才看到好多人说要用AES/DES加完密后还要BASE64加密,照做时发现android和java的Base64加密解密不一致,只好不使用java或android的Base64重新在网上找了一个,感谢以下两位提供的代码,两段分别转载自以下博客. https://www.cnblogs.com/xuhaiqing/archive/2013/03/12/2955837.html https://www.c

php与java通用AES加密解密算法

php与java通用AES加密解密算法 AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法. php版代码如下: <?php class CryptAES { protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected

javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套.用起来还是很有效的. 闲言少絮,直接上干货. js 版base 64 算法  base64.js var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //将Ansi编码的字符串进行Base64编码 function encode64(input) { var output = &quo

DES对称加解密、AES RijndaelManaged加解密、Base64加密解密、MD5加密等操作辅助类 EncodeHelper

/// <summary> /// 使用默认加密 /// </summary> /// <param name="strText"></param> /// <returns></returns> public static string DesEncrypt(string strText) /// <summary> /// 使用默认解密 /// </summary> /// <pa

RC4加密解密算法

RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数据信息安全(个人见解,不周之处请谅解!). package com.bao.tools.encryption; import java.io.Console;import java.io.IOException;import java.util.Scanner; import org.junit.T