zoukankan      html  css  js  c++  java
  • Java Base64Utils ----Utils

    Java Base64Utils

     

    Java Base64Utils

    7
    /**
     * <html>
     * <body>
     *  <P> Copyright 1994 JsonInternational</p>
     *  <p> All rights reserved.</p>
     *  <p> Created on 19941115</p>
     *  <p> Created by Jason</p>
     *  </body>
     * </html>
     */
    package cn.ucaner.alpaca.framework.utils.encrypt;
     
    /**
    * @Package:cn.ucaner.common.utils.encrypt  
    * @ClassName:Base64Utils  
    * @Description:   <p> BASE64加解密工具类</p>
    * @Author: - Jason
    * @CreatTime:2017年10月25日 下午5:49:33  
    * @Modify By:  
    * @ModifyTime: 
    * @Modify marker:  
    * @version    V1.0
     */
    class Base64Utils {
     
        private static char[] base64EncodeChars = new char[] { 'A''B''C''D',
                'E''F''G''H''I''J''K''L''M''N''O''P''Q',
                'R''S''T''U''V''W''X''Y''Z''a''b''c''d',
                'e''f''g''h''i''j''k''l''m''n''o''p''q',
                'r''s''t''u''v''w''x''y''z''0''1''2''3',
                '4''5''6''7''8''9''+''/' };
     
        private static byte[] base64DecodeChars = new byte[] { -1, -1, -1, -1, -1,
                -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
                -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
                -1, -1, -1, -162, -1, -1, -1635253545556575859,
                6061, -1, -1, -1, -1, -1, -1, -10123456789,
                10111213141516171819202122232425, -1,
                -1, -1, -1, -1, -1262728293031323334353637,
                3839404142434445464748495051, -1, -1, -1,
                -1, -1 };
     
        /**
         * BASE64加密
         * @param data
         * @return
         */
        protected static String encrypt(byte[] data) {
            StringBuffer sb = new StringBuffer();
            int len = data.length;
            int i = 0;
            int b1, b2, b3;
            while (i < len) {
                b1 = data[i++] & 0xff;
                if (i == len) {
                    sb.append(base64EncodeChars[b1 >>> 2]);
                    sb.append(base64EncodeChars[(b1 & 0x3) << 4]);
                    sb.append("==");
                    break;
                }
                b2 = data[i++] & 0xff;
                if (i == len) {
                    sb.append(base64EncodeChars[b1 >>> 2]);
                    sb.append(base64EncodeChars[((b1 & 0x03) << 4)
                            | ((b2 & 0xf0) >>> 4)]);
                    sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);
                    sb.append("=");
                    break;
                }
                b3 = data[i++] & 0xff;
                sb.append(base64EncodeChars[b1 >>> 2]);
                sb.append(base64EncodeChars[((b1 & 0x03) << 4)
                        | ((b2 & 0xf0) >>> 4)]);
                sb.append(base64EncodeChars[((b2 & 0x0f) << 2)
                        | ((b3 & 0xc0) >>> 6)]);
                sb.append(base64EncodeChars[b3 & 0x3f]);
            }
            return sb.toString();
        }
     
        /**
         * Base64 解密
         * @param str
         * @return
         * @throws Exception
         */
        protected static byte[] decrypt(String str) throws Exception{
            StringBuffer sb = new StringBuffer();
            byte[] data =  str.getBytes("US-ASCII");
            int len = data.length;
            int i = 0;
            int b1, b2, b3, b4;
            while (i < len) {
     
                do {
                    b1 = base64DecodeChars[data[i++]];
                while (i < len && b1 == -1);
                if (b1 == -1)
                    break;
     
                do {
                    b2 = base64DecodeChars[data[i++]];
                while (i < len && b2 == -1);
                if (b2 == -1)
                    break;
                sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4)));
     
                do {
                    b3 = data[i++];
                    if (b3 == 61)
                        return sb.toString().getBytes("iso8859-1");
                    b3 = base64DecodeChars[b3];
                while (i < len && b3 == -1);
                if (b3 == -1)
                    break;
                sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));
     
                do {
                    b4 = data[i++];
                    if (b4 == 61)
                        return sb.toString().getBytes("iso8859-1");
                    b4 = base64DecodeChars[b4];
                while (i < len && b4 == -1);
                if (b4 == -1)
                    break;
                sb.append((char) (((b3 & 0x03) << 6) | b4));
            }
            return sb.toString().getBytes("iso8859-1");
        }
         
         /**
         *For Test By Jason
         */
        public static void main(String[] args) {
             
        }
    }

      

    分类: JavaUtils
    标签: java工具
  • 相关阅读:
    模板
    Codeforces Round #598 (Div. 3)
    Codeforces Round #589 (Div. 2)
    日记集
    模板
    Codeforces Round #592 (Div. 2)
    Linux挂载新盘
    VMware实用技巧
    useradd和adduser的区别
    ubuntu VSFTPD搭建FTP服务器 提示530错误
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11911079.html
Copyright © 2011-2022 走看看