`
xinklabi
  • 浏览: 1590999 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java实现Base64加密解密

 
阅读更多
  1. import java.io.ByteArrayOutputStream;  
  2.   
  3. public class Base64  
  4. {  
  5.     private static char[] base64EncodeChars 
  6. new char[] { 'A''B''C''D''E''F''G''H''I'
  7. 'J''K''L''M''N''O''P',  
  8.             'Q''R''S''T''U''V''W''X'
  9. 'Y''Z''a''b''c''d''e''f''g''h''i''j'
  10. 'k''l''m''n''o',  
  11.             'p''q''r''s''t''u''v''w''x''y'
  12. 'z''0''1''2''3''4''5''6''7''8''9''+''/' };  
  13.   
  14.     private static byte[] base64DecodeChars 
  15. new byte[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
  16. , -1, -1, -1, -1, -1, -1, -1,  
  17.             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
  18. , -1, -1, -1, -1, -1, -1, -1, -1, -162, -1, -1, -16352535455,  
  19.             565758596061, -1, -1, -1, -1, -1, -1, -1
  20. 01234567891011121314151617181920,  
  21.             2122232425, -1, -1, -1, -1, -1, -126272829
  22. 3031323334353637383940414243444546,  
  23.             4748495051, -1, -1, -1, -1, -1 };  
  24.   
  25.     private Base64()  
  26.     {  
  27.     }  
  28.   
  29.     public static String encode(byte[] data)  
  30.     {  
  31.         StringBuffer sb = new StringBuffer();  
  32.         int len = data.length;  
  33.         int i = 0;  
  34.         int b1, b2, b3;  
  35.   
  36.         while (i < len)  
  37.         {  
  38.             b1 = data[i++] & 0xff;  
  39.             if (i == len)  
  40.             {  
  41.                 sb.append(base64EncodeChars[b1 >>> 2]);  
  42.                 sb.append(base64EncodeChars[(b1 & 0x3) << 4]);  
  43.                 sb.append("==");  
  44.                 break;  
  45.             }  
  46.             b2 = data[i++] & 0xff;  
  47.             if (i == len)  
  48.             {  
  49.                 sb.append(base64EncodeChars[b1 >>> 2]);  
  50.                 sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);  
  51.                 sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);  
  52.                 sb.append("=");  
  53.                 break;  
  54.             }  
  55.             b3 = data[i++] & 0xff;  
  56.             sb.append(base64EncodeChars[b1 >>> 2]);  
  57.             sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);  
  58.             sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);  
  59.             sb.append(base64EncodeChars[b3 & 0x3f]);  
  60.         }  
  61.         return sb.toString();  
  62.     }  
  63.   
  64.     public static byte[] decode(String str)  
  65.     {  
  66.         byte[] data = str.getBytes();  
  67.         int len = data.length;  
  68.         ByteArrayOutputStream buf = new ByteArrayOutputStream(len);  
  69.         int i = 0;  
  70.         int b1, b2, b3, b4;  
  71.   
  72.         while (i < len)  
  73.         {  
  74.   
  75.             /* b1 */  
  76.             do  
  77.             {  
  78.                 b1 = base64DecodeChars[data[i++]];  
  79.             }  
  80.             while (i < len && b1 == -1);  
  81.             if (b1 == -1)  
  82.             {  
  83.                 break;  
  84.             }  
  85.   
  86.             /* b2 */  
  87.             do  
  88.             {  
  89.                 b2 = base64DecodeChars[data[i++]];  
  90.             }  
  91.             while (i < len && b2 == -1);  
  92.             if (b2 == -1)  
  93.             {  
  94.                 break;  
  95.             }  
  96.             buf.write((int) ((b1 << 2) | ((b2 & 0x30) >>> 4)));  
  97.   
  98.             /* b3 */  
  99.             do  
  100.             {  
  101.                 b3 = data[i++];  
  102.                 if (b3 == 61)  
  103.                 {  
  104.                     return buf.toByteArray();  
  105.                 }  
  106.                 b3 = base64DecodeChars[b3];  
  107.             }  
  108.             while (i < len && b3 == -1);  
  109.             if (b3 == -1)  
  110.             {  
  111.                 break;  
  112.             }  
  113.             buf.write((int) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));  
  114.   
  115.             /* b4 */  
  116.             do  
  117.             {  
  118.                 b4 = data[i++];  
  119.                 if (b4 == 61)  
  120.                 {  
  121.                     return buf.toByteArray();  
  122.                 }  
  123.                 b4 = base64DecodeChars[b4];  
  124.             }  
  125.             while (i < len && b4 == -1);  
  126.             if (b4 == -1)  
  127.             {  
  128.                 break;  
  129.             }  
  130.             buf.write((int) (((b3 & 0x03) << 6) | b4));  
  131.         }  
  132.         return buf.toByteArray();  
  133.     }  
  134.   
  135.     public static void main(String[] args)  
  136.     {  
  137.         Base64 base64 = new Base64();  
  138.           
  139.         String testStr = "{\"name\":\"vicken\",\"age\":20}";  
  140.         System.out.println("加密前:" + testStr);  
  141.           
  142.         String encodeStr = base64.encode(testStr.getBytes());  
  143.         System.out.println("加密数据:" + encodeStr);  
  144.           
  145.         byte[] decodeStr = base64.decode(encodeStr);  
  146.         System.out.println("解密数据:" + new String(decodeStr));  
  147.     }  
  148. }  
分享到:
评论

相关推荐

    用Java实现BASE64加密解密

    总之,Java提供了方便的`java.util.Base64`工具类来处理Base64编码和解码,使得在Java项目中实现Base64加密解密变得简单且高效。这个基础的加密解密机制虽然简单,但在很多场景下已经足够满足基本的数据保护需求。

    java 图片base64 加密解密

    在Java编程中,图片Base64加密解密是一种常见的数据处理技术,特别是在网络传输和存储时,由于Base64编码可以将二进制数据转换为可打印的ASCII字符,因此非常适用。`sun.misc.BASE64Encoder`和`sun.misc.BASE64...

    Java Base64加密解密方法工具类

    Java Base64加密解密方法工具类

    BASE64加密解密

    另外,`BASE64加密解密 方法.txt`很可能是详细介绍了如何在Java中实现BASE64加密解密的步骤和技术细节。 综上所述,BASE64加密解密在Java开发中是一个实用的技术,它允许开发者轻松地在二进制数据和ASCII字符串之间...

    Base64加密解密java/js

    参照网上Base64 js加密解密写的java实现,网上没看到出现过,可能大神都不屑写这种小东东,只好自己写了。弄了好几天,总算弄好了。 因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,...

    java_base64加密解密实例

    在给定的"java_base64加密解密实例"中,我们将探讨如何使用Apache Commons库进行Base64的加密和解密操作,并设置自定义密钥来增强安全性。 Apache Commons Codec库提供了Base64工具类,它包含了Base64编码和解码的...

    java实现base64加密

    下面我们将详细探讨如何在Java中实现Base64加密和解密: 1. **Base64编码**: 使用`java.util.Base64.Encoder`接口的`encodeToString()`方法可以将字节数组编码为Base64字符串。例如: ```java byte[] bytes = ...

    Base64加密解密工具类

    java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!

    pb和java对称base64加密解密

    在标题"pb和java对称base64加密解密"中,涉及到了两个编程语言——PowerBuilder(pb)和Java,以及一种常用的编码方式——Base64。同时,描述中提到了MD5加密,这又是一种常见的哈希加密算法。下面我们将详细探讨...

    android工具类:基于javaBase64的加密解密工具类

    本文将详细介绍一个基于Java Base64的Android加密解密工具类,该工具类支持公钥加密和私钥解密,具有高度的解耦性,方便集成到项目中。 一、Base64加密解密基础 Base64是一种编码方式,它将任意二进制数据转换为可...

    base64加密解密的hive udf函数

    本文将详细探讨如何在Hive中自定义User Defined Function(UDF)来实现Base64的加密和解密。 首先,我们需要了解Base64的基本原理。Base64是一种将任意二进制数据转化为ASCII字符集的方法,它通过将每3个字节转换为...

    AES加密解密 Base64加密解密

    java代码实例 AES加密解密 Base64加密解密

    java实现Base64加密解密算法

    在Java中实现Base64编码解码的方法相对简单,可以利用Java标准库中的类,如`java.util.Base64`,或者第三方库,如Apache Commons Codec,以及文章中提及的`sun.misc.BASE64Encoder`和`sun.misc.BASE64Decoder`。...

    Java Base64文件加密解密类.rar

    这个"Java Base64文件加密解密类.rar"包含了一个名为`Base64.java`的文件,提供了对文件进行Base64编码和解码的功能,并且可能还包含了其他加密和解密的方法。 在`Base64.java`类中,我们可以期待看到以下关键知识...

    java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及BASE64 jar和源码

    在压缩包中的"java加密、解密"文件中,很可能包含了实现这些加密解密操作的Java代码示例,包括类、方法和可能的测试用例。通过阅读和学习这些代码,开发者可以更好地理解和应用上述加密算法,同时了解如何在实际项目...

    Base64 加密解密小工具

    总的来说,Base64是一种在不同系统之间传输二进制数据的便捷手段,而“Base64 加密解密小工具”则为用户提供了一个方便快捷的实现这一功能的平台。通过理解和熟练运用这类工具,可以更好地处理各种涉及二进制数据...

    jquery-base64加密解密,支持中文

    `jQuery`的Base64实现解决了这个问题,使得包含中文的字符串也可以安全地进行Base64转换。 描述中提到,加密发生在前端,使用`jQuery`,然后解密在后台,可能是Java环境中的Servlet。`jQuery`的`$.ajax`方法用于...

    base64转码解密成明文加密成Java密文

    本主题将深入探讨“Base64转码解密成明文”以及“Base64加密成Java密文”的过程,并介绍相关的Java实现。 首先,我们来看Base64解码。Base64编码的基本原理是将每3个字节的数据(24位)分成4组,每组6位,然后将这6...

    Base64加密解密

    Base64加密与解密的实现,用java代码实现,下载即可放入工程中。

    BASE64加密解密_源文件_jar文件.zip

    总的来说,这个资源为Android开发者提供了一套完整的BASE64加密解密解决方案,无论你是想要学习BASE64的工作原理,还是希望快速集成到项目中,这个压缩包都能满足需求。通过理解并应用这些知识,开发者能够更好地...

Global site tag (gtag.js) - Google Analytics