Skip to main content

一、AES数据加解密#

交互内容中的敏感信息需按照安全规范进行加解密处理,保证数据传输的安全性,例如手机号,身份证号等。目前采用AES算法对敏感数据进行加解密处理,AES算法涉及的密码key,偏移量iv由京东侧统一分配。

1. SDK-JAVA加解密#

根据京东侧提供的SDK开发包中的加解密工具AesUtil进行数据加解密处理

  • 加密
AesUtil.encrypt(String str, String key, String ivStr) 
  • 解密
AesUtil.decrypt(String str, String key, String ivStr) 
  • 环境说明和注意事项 使用京东侧提供的SDK包进行加解密处理时,请使用JDK 1.8.0_161 及以上版本,否则可能会出现以下异常
java.security.InvalidKeyException: Illegal key size...
2. 自定义非SDK加解密#
加密方式填充数据块密码key偏移量iv输出字符集
CBCPKCS5Padding128京东侧提供京东侧提供HEXUTF8

加解密结果可使用以下地址进行验证http://tool.chacuo.net/cryptaes

JOS-加解密-1.png

二、ACES数据加解密#

京东安全部门提供的数据加解密服务,提供密钥授权及对应的加密密钥的管理,接入方不用关心密钥的生成,更新,废止,授权,存储,查询等,使加密功能透明化。
java语言优先选择此种模式,其他语言sdk开发中。

1. JDH-SDK加解密#

引入健康侧提供的jdh-sdk.jar到本地服务

  • 使用示例
    public static void main(String[] args) {        //京东健康分配        String token = "京东健康分配的token";        //固定地址        String kmsURL = "https://kms-aces.jdhealth.com:2000";        TDESettings settings = new TDESettings();        settings.setKmsURL(kmsURL);        try {            TDEClient client = TDEClient.getInstance(settings, token, true);            String str = "我是原文";            String encryptString = client.encryptString(str);            System.out.println("加密后: " + encryptString);            String decryptString = client.decryptString(encryptString);            System.out.println("解密后: " + decryptString);        } catch (Exception e) {            e.printStackTrace();        }    }