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

java android(ios)通用aes加密解密

阅读更多

 

加密方式:
1.先将文本AES加密
2.返回Base64转码

解密方式:
1.将数据进行Base64解码
2.进行AES解密

 

package com.urthinker.jxsh.util;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化;
 * @author happyqing
 * @since 2016.3.30
 */
public class AESOperator {

    /*
     * 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。
     */
    private String sKey = "0123456789abcdef";//key,可自行修改
    private String ivParameter = "1020304050607080";//偏移量,可自行修改
    private static AESOperator instance = null;

    private AESOperator() {

    }

    public static AESOperator getInstance() {
        if (instance == null)
            instance = new AESOperator();
        return instance;
    }

    // 加密
    public String encrypt(String sSrc) throws Exception {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        byte[] raw = sKey.getBytes();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
        byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
        return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。
    }

    // 解密
    public String decrypt(String sSrc) throws Exception {
        try {
            byte[] raw = sKey.getBytes("ASCII");
            SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
            byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original, "utf-8");
            return originalString;
        } catch (Exception ex) {
            return null;
        }
    }

    public static void main(String[] args) throws Exception {
        // 需要加密的字串
        //String cSrc = "[{\"request_no\":\"1001\",\"service_code\":\"FS0001\",\"contract_id\":\"100002\",\"order_id\":\"0\",\"phone_id\":\"13913996922\",\"plat_offer_id\":\"100094\",\"channel_id\":\"1\",\"activity_id\":\"100045\"}]";
        
        String cSrc = "15811111111";
        AESOperator.getInstance();
        // 加密
        long lStart = System.currentTimeMillis();
        String enString = AESOperator.getInstance().encrypt(cSrc);
        System.out.println("加密后的字串是:" + enString);

        long lUseTime = System.currentTimeMillis() - lStart;
        System.out.println("加密耗时:" + lUseTime + "毫秒");
        // 解密
        lStart = System.currentTimeMillis();
        String DeString = AESOperator.getInstance().decrypt(enString);
        System.out.println("解密后的字串是:" + DeString);
        lUseTime = System.currentTimeMillis() - lStart;
        System.out.println("解密耗时:" + lUseTime + "毫秒");
    }

}

android自带Base64加密解密

http://happyqing.iteye.com/blog/2287679

 

参考:

.NET/android/java/iOS AES通用加密解密
http://www.cnblogs.com/jys509/p/4768120.html

 

分享到:
评论

相关推荐

    java、Android、javaScript、ios 通用 AES加密、解密 已实际使用

    java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密;由于csdn会自动把积分改到50,可以发邮件到1622007541@qq.com 免费送

    AES加密解密,iOS,Android,Java,.Net通用

    本工程可以直接使用,而且与IOS,Android,JAVA,.NET 已调通。 主要用于客户端进行通信,数据之间地安全性。对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block ...

    android ios 通用 AES加密

    本篇文章将深入探讨AES加密在Java、Android、iOS以及C#中的应用,以及如何实现这些平台之间的通用加密方式。 AES,即高级加密标准,是一种块密码,采用128位的块大小进行操作,并支持128、192和256位的密钥长度。其...

    AES加密解密算法 iOS和Android完美实现

    在Android平台上,我们可以使用Java的`javax.crypto`包来实现AES加密解密。首先,创建一个`SecretKeySpec`对象来存储密钥,然后创建一个`Cipher`对象,指定加密算法和工作模式。接下来,使用`Cipher`对象的`init`...

    iOS AES加密解密

    在iOS中,苹果提供了一个名为CommonCrypto的框架,它包含了AES加密的实现。在Objective-C项目中,我们需要添加`#import <CommonCrypto/CommonCrypto.h>`来使用这些功能。 接着,我们定义加密和解密的函数。加密通常...

    ios android java 通用 aes加密

    完美解决aes在android和ios端的加解密public static final String VIPARA = "A-16-Byte-String"; public static final String bm = "UTF-8"; 三个端的编码和向量一定要相同

    .net/java/ios三种语言可通用的加密解密方法

    一个Android IOS Java通用的AES128加密解密Demo、这个Demo可以满足用Java开发的后端接口、但是如果不巧你用的.net开发的后台程序、那么我们又应该怎么去编写后端的程序呢?今天给大家分享一个比较强大的Demo、可以...

    iOS与Android通用AES加密

    "iOS与Android通用AES加密"是一个针对这两个主流操作系统实现的数据加密方案,确保信息在传输和存储过程中的安全性。 AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,因其...

    iOS、Android、Java三方通用的AES加密

    总结来说,实现iOS、Android和Java三方通用的AES加密,关键在于选择相同的加密算法、工作模式、填充方式,并确保密钥和初始向量的一致性。在实际应用中,需结合平台特性,灵活运用相应的加密库和API,同时注意数据...

    ios AES加密解密

    本篇将详细介绍如何在iOS应用中实现AES加密解密。 一、AES加密原理 AES加密基于替换和置换操作,通过128位的块进行加密,密钥长度可以是128、192或256位。在加密过程中,原始数据会被分成128位的块,然后通过一系列...

    iOS AES128加密解密

    **iOS中的AES128加密解密** AES(Advanced Encryption Standard),即高级加密标准,是目前广泛用于数据安全保护的一种对称加密算法。在iOS开发中,AES128是常见的加密方式,常用于保护敏感数据,如用户密码、隐私...

    uniapp 前后端AES加密解密.rar

    本压缩包"uniapp 前后端AES加密解密.rar"正是为了解决这一问题,它包含了在uniapp环境下实现前后端AES加密解密的方法。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,具有...

Global site tag (gtag.js) - Google Analytics