Android 加解密SDK

该SDK提供基于AES及DES CBC模式的加解密方法。

引入依赖包

compile 'com.jingdong.wireless.jdsdk.sdk:security:1.0.1'

如果被引入jdlib并且插件中有使用,需要在APP工程添加混淆配置。如果是非插件化APP可以不配置。

-keep class com.jd.jdsdk.security.AesCbcCrypto{*;}
-keep class com.jd.jdsdk.security.DesCbcCrypto{*;}

DesCbcCrypto 类简介

/**
 * DESede 加解密工具 <br/>
 * 模式:CBC <br/>
 * 填充方式:PKCS5Padding <br/>
 *
 * Created by LiTIngchang on 19-7-26
 */
public class DesCbcCrypto {

    /**
     * 加密
     * @param data 数据源
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量, 设置为 null 时使用默认8位0
     * @return 加密后的数据
     * @throws Exception
     */
    public static byte[] encrypt(byte[] data, byte[] key, byte[] desIV) throws Exception {
       ......
    }

    /**
     * 解密
     * @param data 数据源
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量,设置为 null 时使用默认8位0
     * @return 解密后的数据
     * @throws Exception
     */
    public static byte[] decrypt(byte[] data, byte[] key, byte[] desIV)throws Exception {
        ......
    }


    /**
     * 加密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量,设置为 null 时使用默认8位0
     * @return
     */
    public final static String encrypt(String data, String key, byte[] desIV){
        ......
    }

    /**
     * 解密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量,设置为 null 时使用默认8位0
     * @return
     */
    public final static String decrypt(String data, String key, byte[] desIV){
        ......
    }

    /**
     * 加密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量,设置为 null 时使用默认8位0
     * @param charsetName 字符集
     * @return
     */
    public final static String encrypt(String data, String key, byte[] desIV, String charsetName){
        ......
    }

    /**
     * 解密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少为24字节
     * @param desIV CBC加密初始向量,设置为 null 时使用默认8位0
     * @param charsetName 字符集
     * @return
     */
    public final static String decrypt(String data, String key, byte[] desIV, String charsetName){
        ......
    }
}

AesCbcCrypto 类简介

/**
 * AES 加解密工具 <br/>
 * 模式:CBC <br/>
 * 填充方式:PKCS5Padding <br/>
 *
 * Created by LiTIngchang on 19-7-26
 */
public class AesCbcCrypto {
    /**
     * 加密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少24
     * @param desIV CBC加密初始向量, 设置为 null 时使用默认16位0
     * @return
     * @throws Exception
     */
    public static byte[] encrypt(byte[] data, byte[] key, byte[] desIV) throws Exception {
        ......
    }

    /**
     * 解密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少24
     * @param desIV CBC加密初始向量, 设置为 null 时使用默认16位0
     * @return
     * @throws Exception
     */
    public static byte[] decrypt(byte[] data, byte[] key, byte[] desIV) throws Exception {
        ......
    }
    /**
     * 加密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少24
     * @param desIV CBC加密初始向量,设置为 null 时使用默认16位0
     * @return
     */
    public final static String encrypt(String data, String key, byte[] desIV){
        ......
    }

    /**
     * 解密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少24
     * @param desIV CBC加密初始向量,设置为 null 时使用默认16位0
     * @return
     */
    public final static String decrypt(String data, String key, byte[] desIV){
        ......
    }

    /**
     * 加密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数,至少24
     * @param desIV CBC加密初始向量,设置为 null 时使用默认16位0
     * @param charsetName 字符集
     * @return
     */
    public final static String encrypt(String data, String key, byte[] desIV, String charsetName){
        ......
    }

    /**
     * 解密
     * @param data 原始数据
     * @param key 密钥,长度必须是8的倍数
     * @param desIV CBC加密初始向量,设置为 null 时使用默认16位0
     * @param charsetName 字符集
     * @return
     */
    public final static String decrypt(String data, String key, byte[] desIV, String charsetName){
        ......
    }
}

简单示例

String data = "大众 捷达 2019";  //待加密数据
String key = "**********************"; //24位长度的字符串

String str1 = DesCbcCrypto.encrypt(data, key, null);
String str2 = DesCbcCrypto.decrypt(str1, key, null);

String str3 = AesCbcCrypto.encrypt(data, key, null);
String str4 = AesCbcCrypto.decrypt(str3, key, null);
主站中  已保存了 3DES 使用的秘钥,获取秘钥的方法:

key = JDKeyStore.getInstance().generateKey("TrippleDES");

results matching ""

    No results matching ""