我是靠谱客的博主 想人陪鼠标,最近开发中收集的这篇文章主要介绍java京东云Kms密钥管理服务使用java京东云密钥管理服务使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java京东云密钥管理服务使用

前段时间项目中使用到了加密,学习使用了下京东云密钥管理服务。这里记录下,方便今后学习使用
登录京东云官网
在这里插入图片描述
获取accessKeyId和secretAccessKey在另一篇博客中写过,可以查看下:
获取accessKeyId和secretAccessKey

创建一个密钥

密钥id一会会使用到,这里选择的是 华北-北京
在这里插入图片描述


前期准备好了。就开始上代码

引入pom
<!--京东云加密-->
<dependency>
    <groupId>com.jdcloud.sdk</groupId>
    <artifactId>kms</artifactId>
    <version>0.3.0</version>
</dependency>
application.properties
jd.kms.accessKeyId=京东云账号id
jd.kms.secretAccessKey=京东云密钥
jd.kms.kmsKeyId=KMS密钥ID
jd.kms.redionId=华北-北京区

在这里插入图片描述

KmsConfig
package com.zjy.knife4j.config;

import com.jdcloud.sdk.auth.CredentialsProvider;
import com.jdcloud.sdk.auth.StaticCredentialsProvider;
import com.jdcloud.sdk.service.kms.client.KmsClient;
import com.jdcloud.sdk.service.kms.model.DecryptRequest;
import com.jdcloud.sdk.service.kms.model.DecryptResponse;
import com.jdcloud.sdk.service.kms.model.EncryptRequest;
import com.jdcloud.sdk.service.kms.model.EncryptResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Optional;

@Configuration
public class KmsConfig {

    /**
     * 京东云账号id
     */
    @Value("${jd.kms.accessKeyId}")
    private String accessKeyId;

    /**
     * 京东云密钥
     */
    @Value("${jd.kms.secretAccessKey}")
    private String secretAccessKey;

    /**
     * KMS密钥ID
     */
    @Value("${jd.kms.kmsKeyId}")
    private String kmsKeyId;

    /**
     * 华北-北京区
     */
    @Value("${jd.kms.redionId}")
    private String redionId;

    @Bean
    public KmsClient kmsClient() {

        CredentialsProvider credentialsProvider = new StaticCredentialsProvider(accessKeyId, secretAccessKey);
        KmsClient kmsClient= KmsClient.builder().credentialsProvider(credentialsProvider).build();

        return kmsClient;
    }

    /**
     * 加密
     * @param val
     * @return
     */
    public String encrypt(String val){
        if (StringUtils.isBlank(val)){
            return null;
        }
        try {
            val = Base64.getEncoder().encodeToString(val.getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
        }
        EncryptRequest request = new EncryptRequest();
        request.setPlaintext(val);
        request.setKeyId(kmsKeyId);
        request.setRegionId(redionId);
        EncryptResponse encrypt = kmsClient().encrypt(request);
        return Optional.ofNullable(encrypt)
                .map(e -> e.getResult())
                .map(r -> r.getCiphertextBlob())
                .orElse(null);
    }

    /**
     * 解密
     * @param val
     * @return
     */
    public String decrypt(String val){
        if (StringUtils.isBlank(val)){
            return null;
        }
        DecryptRequest request = new DecryptRequest();
        request.setCiphertextBlob(val);
        request.setKeyId(kmsKeyId);
        request.setRegionId(redionId);
        DecryptResponse decrypt = kmsClient().decrypt(request);
        return Optional.ofNullable(decrypt)
                .map(d -> d.getResult())
                .map(r -> r.getPlaintext())
                .map(KmsConfig::getDecoder)
                .orElse(null);
    }

    public static String getDecoder(String value){
        try {
            byte[] decode2 = Base64.getDecoder().decode(value);
            value = new String(decode2, "UTF-8");
        } catch (UnsupportedEncodingException e) {
        }
        return value;
    }
}

EncryptionController
package com.zjy.knife4j.controller;

import com.zjy.knife4j.config.KmsConfig;
import com.zjy.knife4j.model.ResultBO;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/encryption")
@RestController
public class EncryptionController {

    @Autowired
    private KmsConfig kmsConfig;

    /**日志对象*/
    private static final Logger logger = LoggerFactory.getLogger(EncryptionController.class);

    @ApiOperation(value = "加密", notes = "加密")
    @PostMapping("encrypt")
    public ResultBO encrypt(@RequestParam(value = "name",required = false) String name){

        logger.info("传入的加密参数为:{}", name);
        ResultBO results = new ResultBO();

        String encrypt = kmsConfig.encrypt(name);
        logger.info("加密后的数据为:{}", encrypt);

        results.setCode(200);
        results.setContent(encrypt);
        results.setMsg("调用测试接口成功!");
        results.setSucceed(true);

        logger.info("调用测试接口成功");
        return results;
    }

    @ApiOperation(value = "解密", notes = "解密")
    @PostMapping("decrypt")
    public ResultBO decrypt(@RequestParam(value = "name",required = false) String name){

        logger.info("传入的解密参数为:{}", name);
        ResultBO results = new ResultBO();

        String encrypt = kmsConfig.decrypt(name);
        logger.info("解密后的数据为:{}", encrypt);

        results.setCode(200);
        results.setContent(encrypt);
        results.setMsg("调用测试接口成功!");
        results.setSucceed(true);

        logger.info("调用测试接口成功");
        return results;
    }
}

测试

这里是使用knife4j。这里介绍knife4j使用

加密

在这里插入图片描述

解密

在这里插入图片描述

控制台

在这里插入图片描述

测试OK!

欢迎大神指导,可以留言交流!

======================
本人原创文章,转载注明出入!

=================

最后

以上就是想人陪鼠标为你收集整理的java京东云Kms密钥管理服务使用java京东云密钥管理服务使用的全部内容,希望文章能够帮你解决java京东云Kms密钥管理服务使用java京东云密钥管理服务使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部