精华内容
下载资源
问答
  • AES加密base64编码

    2016-04-19 14:39:13
    AES加密,使用base64编码,可以兼容ios
  • 随机生成AES密钥base64编码

    千次阅读 2020-07-22 08:52:46
    import java.security....import java.util.Base64; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; public class Test{ public static void main(String[] args) throws NoSuchAlg...

    package com.xxxxxxx.controller.xxxx;

    import java.security.NoSuchAlgorithmException;
    import java.util.Base64;

    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;

    public class Test {

        public static void main(String[] args) throws NoSuchAlgorithmException {
            // 直接拷贝到main运行即可生成一个Base64唯一字符串
            KeyGenerator keygen = KeyGenerator.getInstance("AES");
            SecretKey deskey = keygen.generateKey();
            System.out.println(Base64.getEncoder().encodeToString(deskey.getEncoded()));
        }
    }
     

    展开全文
  • 最近公司要求我完善一个... 首先做的就是对需要发送的数据进行ASE加密,具体代码如下(因为AES加解密的工具类前辈已经写好了,所以我只需要调用方法就好了) encrypt = AESUtils.encrypt(a.getBytes(), AESKEY.get...

    最近公司要求我完善一个测试APP,由公司的前辈搭建好主体框架,然后由我这个菜鸟来进行功能的开发。(文章只是记录一下自己遇到的问题,给以后的工作提个醒)
    首先做的就是对需要发送的数据进行ASE加密,具体代码如下(因为AES加解密的工具类前辈已经写好了,所以我只需要调用方法就好了)

    encrypt = AESUtils.encrypt(a.getBytes(), AESKEY.getBytes());         //AES加密
    

    首先我的a是自定义的一个变量,赋的是json对象,因为是String类型的,所以需要先调用.getByte()方法,转换成字节型。
    然后对AES加密后的数据进行base64转码(因为AES加密后显示的加密数据存在乱码,所以用base64进行转码),因为base64的包安卓有自带,所以只需要import就好了。

    import android.util.Base64;
    

    之后就是转码的代码了(这里有踩到坑),网上给的代码是这样的

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

    主要看他的方法,因为它是直接用的base64,没有用AES加密过,所以他的数据类型是String类型的,要先通过调用.getByte()方法,转换成字节型。(而我傻傻的照搬的,被自己蠢哭)
    而我们已经用AES加密过了,数据已经转换成了字节型,所以不需要在转化,直接使用加密后的变量就好了,这里是encrypt

    strB64 = Base64.encodeToString(encrypt, Base64.DEFAULT);              //base64编码
    

    这样之后显示的加密信息就不是乱码了。

    再之后的话就是解密了,别搞错了顺序(我就搞错了,蠢哭)
    先解base64的。
    这是网上给的方法

    String str2 = new String(Base64.decode(strBase64.getBytes(), Base64.DEFAULT)); 
    

    因为我上面base64转码的时候ToString已经转成了String类型,所以就不用强制类型转换成String了

    jstrB64=Base64.decode(strB64,Base64.DEFAULT);                   //base64解码
    

    最后就是解AES的了,需要注意的是上面解完base64后,jstrB64是字节型的,所以在解AES时传入的参数不需要在调用.getByte()方法,转换成字节型。直接传入就好了,然后生成的数据还是字节型的,所以这个时候需要强制类型转换成String类型的

    ww=new String(AESUtils.decrypt(jstrB64,AESKEY.getBytes()));     //AES解码
    

    最后留下前辈写的AES加解密的工具类代码

    package com.assem.DeviceTestApp.util;
    
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    
    /**
    * AES加密解密工具
    *
    */
    public class AESUtils {
      /**
       * AES加密
       *
       * @param data
       *            将要加密的内容
       * @param key
       *            密钥
       * @return 已经加密的内容
       */
      public static byte[] encrypt(byte[] data, byte[] key) {
          //不足16字节,补齐内容为差值
          int len = 16 - data.length % 16;
          for (int i = 0; i < len; i++) {
              byte[] bytes = { (byte) len };
              data = ArrayUtils.concat(data, bytes);
          }
          try {
              SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
              Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
              cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
              return cipher.doFinal(data);
          } catch (Exception e) {
              e.printStackTrace();
          }
          return new byte[] {};
      }
    
      /**
       * AES解密
       *
       * @param data
       *            将要解密的内容
       * @param key
       *            密钥
       * @return 已经解密的内容
       */
      public static byte[] decrypt(byte[] data, byte[] key) {
          data = ArrayUtils.noPadding(data, -1);
          try {
              SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
              Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
              cipher.init(Cipher.DECRYPT_MODE, skeySpec);
              byte[] decryptData = cipher.doFinal(data);
              int len = 2 + ByteUtils.byteToInt(decryptData[4]) + 3;
              return ArrayUtils.noPadding(decryptData, len);
          } catch (Exception e) {
              e.printStackTrace();
          }
          return new byte[] {};
      }
    
    }
    


    我是华丽的分割线



    在测试过后,发现加密的数据达到一定长度后,AES解密后的数据会有缺失,和前辈说了这个问题后,他又修改了AES工具类,还帮我把base64的加解密一起封装进去了,之后就不用再在外部调用base64的方法了,直接调用工具类的方法就好了,附上修改后的工具类代码

    public class AESUtils {
        /**
         * AES加密
         *
         * @return 已经加密的内容
         */
        // 加密
        public static String Encrypt(String sSrc, String sKey) throws Exception {
            if (sKey == null) {
                System.out.print("Key为空null");
                return null;
            }
            // 判断Key是否为16位
            if (sKey.length() != 16) {
                System.out.print("Key长度不是16位");
                return null;
            }
            byte[] raw = sKey.getBytes("utf-8");
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
            byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
    
            return Base64.encodeToString(encrypted, Base64.DEFAULT); //此处使用BASE64做转码功能,同时能起到2次加密的作用。
        }
    
        // 解密
        public static String Decrypt(String sSrc, String sKey) throws Exception {
            try {
                // 判断Key是否正确
                if (sKey == null) {
                    System.out.print("Key为空null");
                    return null;
                }
                // 判断Key是否为16位
                if (sKey.length() != 16) {
                    System.out.print("Key长度不是16位");
                    return null;
                }
                byte[] raw = sKey.getBytes("utf-8");
                SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
                cipher.init(Cipher.DECRYPT_MODE, skeySpec);
                byte[] encrypted1 = Base64.decode(sSrc,Base64.DEFAULT);;//先用base64解密
                try {
                    byte[] original = cipher.doFinal(encrypted1);
                    String originalString = new String(original,"utf-8");
                    return originalString;
                } catch (Exception e) {
                    System.out.println(e.toString());
                    return null;
                }
            } catch (Exception ex) {
                System.out.println(ex.toString());
                return null;
            }
        }
    }
    
    展开全文
  • AESBase64加密算法结合使用

    千次阅读 2019-02-27 16:53:05
    &nbsp;...废话不多说,我这里直接写了AES加密算法和BASE64加密算法的工具类,可以直接调用 一. BASE64加密工具类 package com.AES; import sun.misc.BASE64Decoder; import sun.misc.BASE64Enco...

        两种加密算法的结合使用是为了更加安全,使得真正的密码只用用户自己知道,并且外人河南破解。废话不多说,我这里直接写了AES加密算法和BASE64加密算法的工具类,可以直接调用

    一. BASE64加密工具类

    package com.AES;
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    import java.io.IOException;
    /**
     * Created by ${ligh} on 2019/2/25 下午2:17
     */
    public class BaseUtil {
        /**
         * 编码
         *
         * @param bstr
         * @return String
         */
        public static String encode(byte[] bstr) {
            return new BASE64Encoder().encode(bstr);
        }
        /**
         * 解码
         *
         * @param str
         * @return string
         */
        public static byte[] decode(String str) {
            byte[] bt = null;
            try {
                BASE64Decoder decoder = new BASE64Decoder();
                bt = decoder.decodeBuffer(str);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bt;
        }
    }
    

    二. AES加密算法工具类

    package com.AES;
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    import java.security.Key;
    import java.security.MessageDigest;
    /**
     * Created by ${ligh} on 2019/02/27 下午4:01
     */
    public class AESUtil {
    
        /**
         * 預設的Initialization Vector,為16 Bits的0
         */
        private static final IvParameterSpec DEFAULT_IV = new IvParameterSpec(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
        /**
         * 加密演算法使用AES
         */
        private static final String ALGORITHM = "AES";
        /**
         * AES使用CBC模式與PKCS5Padding
         */
        private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
    
        /**
         * 取得AES加解密的密鑰
         */
        private Key key;
        /**
         * AES CBC模式使用的Initialization Vector
         */
        private IvParameterSpec iv;
        /**
         * Cipher 物件
         */
        private Cipher cipher;
    
        /**
         * 建構子,使用128 Bits的AES密鑰(計算任意長度密鑰的MD5)和預設IV
         *
         * @param key 傳入任意長度的AES密鑰
         */
        public AESUtil(final String key) {
            this(key, 128);
        }
    
        /**
         * 建構子,使用128 Bits或是256 Bits的AES密鑰(計算任意長度密鑰的MD5或是SHA256)和預設IV
         *
         * @param key 傳入任意長度的AES密鑰
         * @param bit 傳入AES密鑰長度,數值可以是128、256 (Bits)
         */
        public AESUtil(final String key, final int bit) {
            this(key, bit, null);
        }
    
        /**
         * 建構子,使用128 Bits或是256 Bits的AES密鑰(計算任意長度密鑰的MD5或是SHA256),用MD5計算IV值
         *
         * @param key 傳入任意長度的AES密鑰
         * @param bit 傳入AES密鑰長度,數值可以是128、256 (Bits)
         * @param iv 傳入任意長度的IV字串
         */
        public AESUtil(final String key, final int bit, final String iv) {
            if (bit == 256) {
                this.key = new SecretKeySpec(getHash("SHA-256", key), ALGORITHM);
            } else {
                this.key = new SecretKeySpec(getHash("MD5", key), ALGORITHM);
            }
            if (iv != null) {
                this.iv = new IvParameterSpec(getHash("MD5", iv));
            } else {
                this.iv = DEFAULT_IV;
            }
    
            init();
        }
    
        /**
         * 取得字串的雜湊值
         *
         * @param algorithm 傳入雜驟演算法
         * @param text 傳入要雜湊的字串
         * @return 傳回雜湊後資料內容
         */
        private static byte[] getHash(final String algorithm, final String text) {
            try {
                return getHash(algorithm, text.getBytes("UTF-8"));
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 取得資料的雜湊值
         *
         * @param algorithm 傳入雜驟演算法
         * @param data 傳入要雜湊的資料
         * @return 傳回雜湊後資料內容
         */
        private static byte[] getHash(final String algorithm, final byte[] data) {
            try {
                final MessageDigest digest = MessageDigest.getInstance(algorithm);
                digest.update(data);
                return digest.digest();
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 初始化
         */
        private void init() {
            try {
                cipher = Cipher.getInstance(TRANSFORMATION);
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 加密文字
         *
         * @param str 傳入要加密的文字
         * @return 傳回加密後的文字
         */
        public String encrypt(final String str) {
            try {
                return encrypt(str.getBytes("UTF-8"));
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 加密資料
         *
         * @param data 傳入要加密的資料
         * @return 傳回加密後的資料
         */
        public String encrypt(final byte[] data) {
            try {
                cipher.init(Cipher.ENCRYPT_MODE, key, iv);
                final byte[] encryptData = cipher.doFinal(data);
                return BaseUtil.encode(encryptData);
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 解密文字
         *
         * @param str 傳入要解密的文字
         * @return 傳回解密後的文字
         */
        public String decrypt(final String str) {
            try {
                return decrypt(BaseUtil.decode(str));
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    
        /**
         * 解密文字
         *
         * @param data 傳入要解密的資料
         * @return 傳回解密後的文字
         */
        public String decrypt(final byte[] data) {
            try {
                cipher.init(Cipher.DECRYPT_MODE, key, iv);
                final byte[] decryptData = cipher.doFinal(data);
                return new String(decryptData, "UTF-8");
            } catch (final Exception ex) {
                throw new RuntimeException(ex.getMessage());
            }
        }
    }
    

    三. 创建测试

    package com.AES;
    /**
     * Created by ${ligh} on 2019/2/27 下午4:46
     */
    public class TestAesBase {
        public static void main(String[] args) {
            String key = "ligh";
            String phone = "123456";
            System.out.println("加密前的字符串: "+phone);
            AESUtil aesUtil = new AESUtil(key);
            String encrypt = aesUtil.encrypt(phone);
            System.out.println("加密后的字符串: "+ encrypt);
    
            String decrypt = aesUtil.decrypt(encrypt);
            System.out.println("解密之后的字符串: "+decrypt);
        }
    }
    

    显示结果:
    在这里插入图片描述

    四. 总结

    注意:
        构造方法中传入的参数一定要在加密和解密前统一,不然会出现解密失败的现象

    展开全文
  • iOS开发之 AES+Base64数据混合加密与解密

    iOS开发之 AES+Base64数据混合加密与解密



    "APP的数据安全已经牵动着我们开发者的心,简单的MD5/Base64等已经难以满足当下的数据安全标准,本文简单的介绍下AES与Base64的混合加密与解密"


    AES:高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。


    以上是来自百度百科的解释。


    下面我将用代码来阐述其使用方法。 首先我们创建一个NSData的类扩展,命名为AES,创建完如果对的话应该是这样的NSData+AES然后导入如下头文件


    #import 《CommonCrypto/CommonDigest.h》
    #import 《CommonCrypto/CommonCryptor.h》


    再增加加解密的方法,方便外部文件的调用,写完.h文件如下


    #import 《Foundation/Foundation.h》
    #import 《CommonCrypto/CommonDigest.h》
    #import 《CommonCrypto/CommonCryptor.h》
    @interface NSData (AES)
    //加密
    - (NSData *) AES256_Encrypt:(NSString *)key;
    //解密
    - (NSData *) AES256_Decrypt:(NSString *)key;
    //追加64编码
    - (NSString *)newStringInBase64FromData;
    //同上64编码
    + (NSString*)base64encode:(NSString*)str;
    @end


    .m文件中依次实现这几个方法,具体如下


    #import "NSData+AES.h"static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
     
    @implementation NSData (AES)
     
    //加密
    - (NSData *) AES256_Encrypt:(NSString *)key{
         char keyPtr[kCCKeySizeAES256+1];
         bzero(keyPtr, sizeof(keyPtr));
         [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
         NSUInteger dataLength = [self length];
         size_t bufferSize = dataLength + kCCBlockSizeAES128;
         void *buffer = malloc(bufferSize);
         size_t numBytesEncrypted = 0;
         CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,
         kCCOptionPKCS7Padding | kCCOptionECBMode,
         keyPtr, kCCBlockSizeAES128,
         NULL,
         [self bytes], dataLength,
         buffer, bufferSize,
         &numBytesEncrypted);
         if  (cryptStatus == kCCSuccess) {
             return  [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
         }
         free(buffer);
         return  nil;}
         
         //解密- (NSData *) AES256_Decrypt:(NSString *)key{
     
         char keyPtr[kCCKeySizeAES256+1];
         bzero(keyPtr, sizeof(keyPtr));
         [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
         NSUInteger dataLength = [self length];
         size_t bufferSize = dataLength + kCCBlockSizeAES128;
         void *buffer = malloc(bufferSize);
         size_t numBytesDecrypted = 0;
         CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,
         kCCOptionPKCS7Padding | kCCOptionECBMode,
         keyPtr, kCCBlockSizeAES128,
         NULL,
         [self bytes], dataLength,
         buffer, bufferSize,
         &numBytesDecrypted);
         if  (cryptStatus == kCCSuccess) {
             return  [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
     
         }
         free(buffer);
         return  nil;}
         
         //追加64编码- (NSString *)newStringInBase64FromData            {
     
         NSMutableString *dest = [[NSMutableString alloc] initWithString:@ "" ];
     
         unsigned char * working = (unsigned char *)[self bytes];
     
         int srcLen = (int)[self length];
     
         for  (int i=0; i<srclen; i += 3) {          for  (int nib= "0; nib= srcLen) break;"             unsigned char curr = " ((working[i+byt] << (8-ix)) & 0x3F);"             if  (i+nib < srclen) curr |= " ((working[i+nib] " >> ix) & 0x3F);
     
                 [dest appendFormat:@ "%c" , base64[curr]];
     
             }
     
         }
     
         return  dest;}
         
         + (NSString*)base64encode:(NSString*)str{
     
         if  ([str length] == 0)
     
         return  @ "" ;
     
         const char *source = [str UTF8String];
     
         int strlength  = (int)strlen(source);
     
         char *characters = malloc(((strlength + 2) / 3) * 4);
     
         if  (characters == NULL)
     
         return  nil;
     
         NSUInteger length = 0;
     
         NSUInteger i = 0;
     
         while  (i < strlength) {
     
             char buffer[3] = {0,0,0};
     
             short bufferLength = 0;
     
             while  (bufferLength < 3 && i < strlength)
     
             buffer[bufferLength++] = source[i++];
     
             characters[length++] = base64[(buffer[0] & 0xFC) >> 2];
     
             characters[length++] = base64[((buffer[0] & 0x03) << 4) | ((buffer[1] & 0xF0) >> 4)];
     
             if  (bufferLength > 1)
     
             characters[length++] = base64[((buffer[1] & 0x0F) << 2) | ((buffer[2] & 0xC0) >> 6)];
     
             else  characters[length++] =  '=' ;
     
             if  (bufferLength > 2)
     
             characters[length++] = base64[buffer[2] & 0x3F];
     
             else  characters[length++] =  '=' ;
     
         }
     
         NSString *g = [[NSString alloc] initWithBytesNoCopy:characters length:length encoding:NSASCIIStringEncoding freeWhenDone:YES];
     
     
         return  g;}
         
         @end</srclen; i += 3) {>


    AES+Base64的加密方式到此已经结束了,下面讲一下单纯的AES字符串加密的。


    和上面的基本上差不多,写一个NSString的类扩展,命名为AES,创建完如果对的话应该是这样的NSString+AES导入如下头文件


    #import "NSData+AES.h"


    同样的把加解密的方法写在.h文件中,写完如下


    #import 《Foundation/Foundation.h》
    #import "NSData+AES.h"
    @interface NSString (AES)
    //加密
    - (NSString *) AES256_Encrypt:(NSString *)key;
    //解密
    - (NSString *) AES256_Decrypt:(NSString *)key;
    @end


    .m实现方法


    //加密
    - (NSString *) AES256_Encrypt:(NSString *)key{
         const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
         NSData *data = [NSData dataWithBytes:cstr length:self.length];
         //对数据进行加密
         NSData *result = [data AES256_Encrypt:key];
     
         //转换为2进制字符串
         if  (result && result.length > 0) {
     
         Byte *datas = (Byte*)[result bytes];
         NSMutableString *output = [NSMutableString stringWithCapacity:result.length * 2];
         for (int i = 0; i < result.length; i++){
             [output appendFormat:@ "x" , datas[i]];
         }
         return  output;
         }
         return  nil;
    }
     
    //解密
    - (NSString *) AES256_Decrypt:(NSString *)key{
         //转换为2进制Data
         NSMutableData *data = [NSMutableData dataWithCapacity:self.length / 2];
         unsigned char whole_byte;
         char byte_chars[3] = { '\0' , '\0' , '\0' };
         int i;
         for  (i=0; i < [self length] / 2; i++) {
         byte_chars[0] = [self characterAtIndex:i*2];
         byte_chars[1] = [self characterAtIndex:i*2+1];
         whole_byte = strtol(byte_chars, NULL, 16);
         [data appendBytes:&whole_byte length:1];
         }
     
         //对数据进行解密
         NSData* result = [data AES256_Decrypt:key];
         if  (result && result.length > 0) {
             return  [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
         }
         return  nil;
    }



    到此我们加密的文件基本上都已经OK了,下面我们来简单的的使用一下,具体如下:


    #import "ViewController.h"
    #import "NSString+AES.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {
         [ super  viewDidLoad];
         // Do any additional setup after loading the view, typically from a nib.
         //字符串加密    NSString *key = @"12345678";//Key是和后台约定的key哦,不然无法解密....
         NSString *secret = @ "aes Bison base64" ;
     
     
         NSLog(@ "字符串加密---%@" ,[secret AES256_Encrypt:key]);
     
         //字符串解密    NSLog(@"字符串解密---%@",[[secret AES256_Encrypt:key] AES256_Decrypt:key]);
     
     
         //NSData加密+base64
         NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
     
         NSData *cipher = [plain AES256_Encrypt:key];
     
         NSLog(@ "NSData加密+base64++++%@" ,[cipher newStringInBase64FromData]);
     
     
         //解密
         plain = [cipher AES256_Decrypt:key];
     
         NSLog(@ "NSData解密+base64++++%@" , [[NSString alloc] initWithData:plain encoding:NSUTF8StringEncoding]);}@end


    运行得到打印的结果如下:


    2016-03-30 17:31:55.686 AES_256[14242:198853] 字符串加密---07815ca46d20acc3ba4e43d6930c7537496e851a36dbeac34fa30c5796089b02
    2016-03-30 17:31:55.687 AES_256[14242:198853] 字符串解密---aes Bison base64
    2016-03-30 17:31:55.687 AES_256[14242:198853] NSData加密+base64++++B4FcpG0grMO6TkPWkwx1N0luhRo22+rDT6MMV5YImwI
    2016-03-30 17:31:55.687 AES_256[14242:198853] NSData解密+base64++++aes Bison base64


    ##值得注意的是Key是和后台约定的key哦,不然无法解密….

    展开全文
  • Base64编码AES加密

    千次阅读 2018-09-10 19:30:32
    Base64编码AES加密 版本:2018/9/10-1(20:18) Base64编码AES加密 问题汇总 Base64 Java实现 Android实现 文件 OkHttp AES 参考资料 问题汇总 Base64是什么...
  • 主要完成js与java得aes加密,AES加密模式和填充方式,加/解密系列(三)-前端加密JS库--CryptoJS
  • AES加密 + Base64编码

    2021-01-06 17:42:23
    AES 加密 依赖: <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6</version> </dependency> 加密代码 ...
  • Oracle 进行AESBase64加解密

    千次阅读 2019-07-03 15:24:26
    使用Oracle数据库的存储过程进行AES加密.并将加密结果进行Base64编码输出
  • openssl的AES加密(base64编码) 【 AES加密 】 在这里插入代码片 AES算法的块(block)的长度固定为16字节。假设一个字符串在AES加密前的长度为cleanLen,加密后的长度为cipherLen,则二者有下面的关系,其中的“/...
  • vue RSA + AES + Base64加密

    2021-04-21 14:57:35
    文章目录安装依赖RSA加密AES算法处理劫取axios RSA,RSA2公钥私钥加密解密 AES加解密在线调试工具 安装依赖 // RSA依赖 npm install jsencrypt --save // AES依赖 npm install cryptojs RSA加密 创建rsa.js import ...
  • iOS加密:AES+Base64

    千次阅读 2017-12-21 17:34:04
    本篇文章记录了iOS中对字符串进行AES加密+Base64编码的过程,考虑到加密对象和使用场景,理所当然的将加密过程丢到了NSString的类别中,即下面说到的NSString+AES。 一、对AES认识有以下几点(针对开发中涉及到的,...
  • AES+base64实现双重加密

    千次阅读 2017-05-25 15:32:18
    * AES加密后再使用BASE64加密 * 增加前缀 * 1.辨识正常数据,使其不进行解密 * 2.提高安全度 * @param content * @return * @throws Exception */ public static String encrypt(String content) {...
  • 1、to_base64 编码 select to_base64('12345'); 编码结果:MTIzNDU= 2、from_base64 解码 select from_base64('MTIzNDU='); 解码结果:123456 3、加密 select to_base64(AES_ENCRYPT('123456','abcde')); 加密...
  • "encoding/base64" "crypto/aes" "crypto/cipher" "fmt" ) var iv = []byte{34, 35, 35, 57, 68, 4, 35, 36, 7, 8, 35, 23, 35, 86, 35, 23} func encodeBase64(b []byte) string { return base64....
  • AES-128-CBC加密Base64编码Demo,亲测有效。而且 直接引入了BASE 64编码类 非常方便。不过只有加密算法
  • java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及apache BASE64 jar和源码
  • [JAVA加解密]DES,AES,Base64编码,PBE

    千次阅读 2015-01-20 21:25:23
    ()内指定转换编码格式; byte[]->string: new String(bs); bs为byte[]数组 注意:bs.toString不能转换为String对象! byte[] bs="abc".getBytes(); System.out.println(bs.toString()); System.out....
  • Java 使用 AES + BASE64加密

    千次阅读 2019-04-25 11:35:41
    工具类: // 加密长度 private final static... // 编码方式 private final static String ENCODE = "UTF-8"; // 秘钥 private final static String defaultKey = "password"; // 前缀 private final static ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,944
精华内容 4,777
关键字:

aes编码base64