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