8 changed files with 214 additions and 3 deletions
-
7tp-admin/src/main/resources/application-dev.yml
-
7tp-admin/src/main/resources/application.yml
-
1tp-common/src/main/java/com/inscloudtech/common/encrypt/filter/CryptoFilter.java
-
59tp-functional/src/main/java/com/inscloudtech/functional/controller/TestEncryptController.java
-
66tp-functional/src/main/java/com/inscloudtech/functional/domain/TestDemo.java
-
34tp-functional/src/main/java/com/inscloudtech/functional/domain/TestDemoEncrypt.java
-
27tp-functional/src/main/java/com/inscloudtech/functional/domain/vo/TestDemoBo.java
-
16tp-functional/src/main/java/com/inscloudtech/functional/mapper/TestDemoEncryptMapper.java
@ -0,0 +1,59 @@ |
|||||
|
package com.inscloudtech.functional.controller; |
||||
|
|
||||
|
|
||||
|
import com.inscloudtech.common.annotation.Log; |
||||
|
import com.inscloudtech.common.core.domain.R; |
||||
|
import com.inscloudtech.common.encrypt.annotation.ApiEncrypt; |
||||
|
import com.inscloudtech.common.enums.BusinessType; |
||||
|
import com.inscloudtech.functional.domain.TestDemoEncrypt; |
||||
|
import com.inscloudtech.functional.domain.vo.TestDemoBo; |
||||
|
import com.inscloudtech.functional.mapper.TestDemoEncryptMapper; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.beans.factory.annotation.Value; |
||||
|
import org.springframework.validation.annotation.Validated; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 创建敏感数据库 |
||||
|
* |
||||
|
*/ |
||||
|
@Validated |
||||
|
@RestController |
||||
|
@RequestMapping("/functional/encrypt") |
||||
|
public class TestEncryptController { |
||||
|
|
||||
|
@Autowired |
||||
|
private TestDemoEncryptMapper mapper; |
||||
|
|
||||
|
@Value("${mybatis-encryptor.enable}") |
||||
|
private Boolean encryptEnable; |
||||
|
|
||||
|
/** |
||||
|
* 加密和解密模块测试 |
||||
|
*/ |
||||
|
@ApiEncrypt(response = true) |
||||
|
@Log(title = "测试敏感数据库加解密", businessType = BusinessType.UPDATE) |
||||
|
@PostMapping("/de") |
||||
|
public R<Map<String, TestDemoEncrypt>> test(@RequestBody TestDemoBo bo) { |
||||
|
if (!encryptEnable) { |
||||
|
throw new RuntimeException("加密功能未开启!"); |
||||
|
} |
||||
|
Map<String, TestDemoEncrypt> map = new HashMap<>(2); |
||||
|
TestDemoEncrypt demo = new TestDemoEncrypt(); |
||||
|
demo.setTestKey(bo.getKey()); |
||||
|
demo.setValue(bo.getValue()); |
||||
|
mapper.insert(demo); |
||||
|
map.put("加密", demo); |
||||
|
TestDemoEncrypt testDemo = mapper.selectById(demo.getId()); |
||||
|
map.put("解密", testDemo); |
||||
|
|
||||
|
return R.ok(map); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,66 @@ |
|||||
|
package com.inscloudtech.functional.domain; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import com.inscloudtech.common.core.domain.BaseEntity; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 测试单表对象 test_demo |
||||
|
* |
||||
|
* @author Lion Li |
||||
|
* @date 2021-07-26 |
||||
|
*/ |
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@TableName("test_demo") |
||||
|
public class TestDemo extends BaseEntity { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键 |
||||
|
*/ |
||||
|
@TableId(value = "id") |
||||
|
private Long id; |
||||
|
|
||||
|
/** |
||||
|
* 部门id |
||||
|
*/ |
||||
|
private Long deptId; |
||||
|
|
||||
|
/** |
||||
|
* 用户id |
||||
|
*/ |
||||
|
private Long userId; |
||||
|
|
||||
|
/** |
||||
|
* 排序号 |
||||
|
*/ |
||||
|
@OrderBy(asc = false, sort = 1) |
||||
|
private Integer orderNum; |
||||
|
|
||||
|
/** |
||||
|
* key键 |
||||
|
*/ |
||||
|
private String testKey; |
||||
|
|
||||
|
/** |
||||
|
* 值 |
||||
|
*/ |
||||
|
private String value; |
||||
|
|
||||
|
/** |
||||
|
* 版本 |
||||
|
*/ |
||||
|
@Version |
||||
|
private Long version; |
||||
|
|
||||
|
/** |
||||
|
* 删除标志 |
||||
|
*/ |
||||
|
@TableLogic |
||||
|
private Long delFlag; |
||||
|
|
||||
|
} |
@ -0,0 +1,34 @@ |
|||||
|
package com.inscloudtech.functional.domain; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.FieldFill; |
||||
|
import com.baomidou.mybatisplus.annotation.TableField; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.inscloudtech.common.encrypt.annotation.EncryptField; |
||||
|
import com.inscloudtech.common.encrypt.enumd.AlgorithmType; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
|
||||
|
@Data |
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@TableName("test_demo") |
||||
|
public class TestDemoEncrypt extends TestDemo { |
||||
|
|
||||
|
/** |
||||
|
* key键 |
||||
|
*/ |
||||
|
// @EncryptField(algorithm=AlgorithmType.SM2, privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgZSlOvw8FBiH+aFJWLYZP/VRjg9wjfRarTkGBZd/T3N+gCgYIKoEcz1UBgi2hRANCAAR5DGuQwJqkxnbCsP+iPSDoHWIF4RwcR5EsSvT8QPxO1wRkR2IhCkzvRb32x2CUgJFdvoqVqfApFDPZzShqzBwX", publicKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEeQxrkMCapMZ2wrD/oj0g6B1iBeEcHEeRLEr0/ED8TtcEZEdiIQpM70W99sdglICRXb6KlanwKRQz2c0oaswcFw==") |
||||
|
@EncryptField(algorithm = AlgorithmType.RSA, privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANBBEeueWlXlkkj2+WY5l+IWe42d8b5K28g+G/CFKC/yYAEHtqGlCsBOrb+YBkG9mPzmuYA/n9k0NFIc8E8yY5vZQaroyFBrTTWEzG9RY2f7Y3svVyybs6jpXSUs4xff8abo7wL1Y/wUaeatTViamxYnyTvdTmLm3d+JjRij68rxAgMBAAECgYAB0TnhXraSopwIVRfmboea1b0upl+BUdTJcmci412UjrKr5aE695ZLPkXbFXijVu7HJlyyv94NVUdaMACV7Ku/S2RuNB70M7YJm8rAjHFC3/i2ZeIM60h1Ziy4QKv0XM3pRATlDCDNhC1WUrtQCQSgU8kcp6eUUppruOqDzcY04QJBAPm9+sBP9CwDRgy3e5+V8aZtJkwDstb0lVVV/KY890cydVxiCwvX3fqVnxKMlb+x0YtH0sb9v+71xvK2lGobaRECQQDVePU6r/cCEfpc+nkWF6osAH1f8Mux3rYv2DoBGvaPzV2BGfsLed4neRfCwWNCKvGPCdW+L0xMJg8+RwaoBUPhAkAT5kViqXxFPYWJYd1h2+rDXhMdH3ZSlm6HvDBDdrwlWinr0Iwcx3iSjPV93uHXwm118aUj4fg3LDJMCKxOwBxhAkByrQXfvwOMYygBprRBf/j0plazoWFrbd6lGR0f1uI5IfNnFRPdeFw1DEINZ2Hw+6zEUF44SqRMC+4IYJNc02dBAkBCgy7RvfyV/A7N6kKXxTHauY0v6XwSSvpeKtRJkbIcRWOdIYvaHO9L7cklj3vIEdwjSUp9K4VTBYYlmAz1xh03", publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQQRHrnlpV5ZJI9vlmOZfiFnuNnfG+StvIPhvwhSgv8mABB7ahpQrATq2/mAZBvZj85rmAP5/ZNDRSHPBPMmOb2UGq6MhQa001hMxvUWNn+2N7L1csm7Oo6V0lLOMX3/Gm6O8C9WP8FGnmrU1YmpsWJ8k73U5i5t3fiY0Yo+vK8QIDAQAB") |
||||
|
private String testKey; |
||||
|
|
||||
|
/** |
||||
|
* 值不同的加密方式 |
||||
|
*/ |
||||
|
// @EncryptField // 什么也不写走默认yml配置 |
||||
|
// @EncryptField(algorithm = AlgorithmType.SM4, password = "10rfylhtccpuyke5") |
||||
|
@EncryptField(algorithm = AlgorithmType.AES, password = "10rfylhtccpuyke5") |
||||
|
private String value; |
||||
|
|
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
package com.inscloudtech.functional.domain.vo; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import javax.validation.constraints.NotBlank; |
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
*/ |
||||
|
@Data |
||||
|
public class TestDemoBo implements Serializable { |
||||
|
|
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* key |
||||
|
*/ |
||||
|
@NotBlank(message = "key不能为空") |
||||
|
private String key; |
||||
|
|
||||
|
/** |
||||
|
* value |
||||
|
*/ |
||||
|
@NotBlank(message = "value不能为空") |
||||
|
private String value; |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package com.inscloudtech.functional.mapper; |
||||
|
|
||||
|
|
||||
|
import com.baomidou.dynamic.datasource.annotation.DS; |
||||
|
import com.inscloudtech.common.core.mapper.BaseMapperPlus; |
||||
|
import com.inscloudtech.functional.domain.TestDemoEncrypt; |
||||
|
|
||||
|
/** |
||||
|
* 测试加密功能 |
||||
|
* |
||||
|
* @author Lion Li |
||||
|
*/ |
||||
|
@DS("sensitiveDb") |
||||
|
public interface TestDemoEncryptMapper extends BaseMapperPlus<TestDemoEncryptMapper,TestDemoEncrypt, TestDemoEncrypt> { |
||||
|
|
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue