Commit 4b6a726a authored by killer's avatar killer

phone数据加密

parent 464d1d64
......@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.AllArgsConstructor;
......@@ -33,7 +33,7 @@ public class Contact extends BaseEntity implements Serializable {
@Column(name = "name")
private String name;
@Column(name = "phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String phoneNo;
@Column(name = "biz_type")
private BizType bizType = BizType.CASH;
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
......@@ -45,14 +45,14 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable {
* 原手机号码
*/
@Column(name = "prev_phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String prevPhoneNo;
/**
* 新手机号码
*/
@Column(name = "cur_phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String curPhoneNo;
/**
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
......@@ -28,7 +28,7 @@ public class User extends BaseEntity implements Serializable {
* 手机号
*/
@Column(name = "phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String phoneNo;
/**
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.motan.retbean.XUserDetail;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdType;
import lombok.Getter;
......@@ -29,7 +29,7 @@ public class UserDetail extends BaseEntity implements Serializable {
private Long userId;
@Column(name = "phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String phoneNo;
@Column(name = "name")
......
......@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.MaritalStatus;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.*;
......@@ -24,7 +24,7 @@ public class UserSpouse extends BaseEntity implements Serializable {
private Long userId;
@Column(name = "spouse_phone")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String spousePhone;
@Column(name = "spouse_name")
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
......@@ -29,7 +29,7 @@ public class UuidPhoneMapping implements Serializable {
private String uuid;
@Column(name = "phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String phoneNo;
......
package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter;
import cn.quantgroup.xyqb.util.EmojiUtil;
import lombok.Data;
import org.springframework.beans.BeanUtils;
......@@ -23,7 +23,7 @@ public class WechatUserInfo extends BaseEntity implements Serializable {
@Column(name = "open_id")
private String openId;
@Column(name = "phone_no")
@Convert(converter = PhoneEncryptConverter.class)
@Convert(converter = EncryptConverter.class)
private String phoneNo = "";
@Column(name = "app_name")
private String appName = "xyqb";
......
......@@ -2,7 +2,6 @@ package cn.quantgroup.xyqb.entity.converter;
import cn.quantgroup.security.AESEncryption;
import cn.quantgroup.xyqb.util.ApplicationContextHolder;
import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -10,22 +9,22 @@ import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
/**
* 手机号字段加解密转换器
* <b>此处只对有效手机号处理</b>
* 通用字段加解密转换器
*
* @author killer
* @date 2022年01月04日
**/
@Slf4j
@Converter
public class PhoneEncryptConverter implements AttributeConverter<String, String> {
public class EncryptConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String entityAttribute) {
/* 非手机号原样保存 */
if (!ValidationUtil.validatePhoneNo(entityAttribute)) {
if (StringUtils.isBlank(entityAttribute)) {
return entityAttribute;
}
/* 加密 */
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
return aesEncryption.encryptBase64(entityAttribute);
......@@ -33,11 +32,12 @@ public class PhoneEncryptConverter implements AttributeConverter<String, String>
@Override
public String convertToEntityAttribute(String databaseColumn) {
/* 明文手机号或者空原样返回 */
if (ValidationUtil.validatePhoneNo(databaseColumn) || StringUtils.isBlank(databaseColumn)) {
if (StringUtils.isBlank(databaseColumn)) {
return databaseColumn;
}
/* 解密 */
/* 解密(兼容数据库字段未执行全部加密前的查询) */
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
try {
return aesEncryption.decryptBase64(databaseColumn);
......
......@@ -237874,3 +237874,56 @@ Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExce
[2022-01-04 16:52:17.340][DEBUG][XNIO-2 task-5|org.springframework.orm.jpa.EntityManagerFactoryUtils|closeEntityManager] - Closing JPA EntityManager
[2022-01-04 16:52:17.341][DEBUG][XNIO-2 task-5|org.springframework.web.servlet.DispatcherServlet|processRequest] - Successfully completed request
[2022-01-04 16:52:17.341][DEBUG][XNIO-2 task-5|org.springframework.boot.web.filter.OrderedRequestContextFilter|doFilterInternal] - Cleared thread-bound request context: HttpServletRequestImpl [ POST /v1/test/save/user ]
[2022-01-04 16:52:34.787][DEBUG][Apollo-RemoteConfigLongPollService-1|sun.net.www.protocol.http.HttpURLConnection|log] - sun.net.www.MessageHeader@7eec326e10 pairs: {null: HTTP/1.1 304 Not Modified}{Server: Apache-Coyote/1.1}{X-Content-Type-Options: nosniff}{X-XSS-Protection: 1; mode=block}{Cache-Control: no-cache, no-store, max-age=0, must-revalidate}{Pragma: no-cache}{Expires: 0}{X-Frame-Options: SAMEORIGIN}{X-Application-Context: apollo-configservice:github:15422}{Date: Tue, 04 Jan 2022 08:52:34 GMT}
[2022-01-04 16:52:34.790][DEBUG][Apollo-RemoteConfigLongPollService-1|sun.net.www.protocol.http.HttpURLConnection|log] - sun.net.www.MessageHeader@37678bb25 pairs: {GET /notifications/v2?cluster=k8s&dataCenter=k8s&appId=xyqb-user2&ip=192.168.28.10&notifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A14599%7D%2C%7B%22namespaceName%22%3A%22tech.common%22%2C%22notificationId%22%3A9472%7D%2C%7B%22namespaceName%22%3A%22cash.common%22%2C%22notificationId%22%3A2208%7D%2C%7B%22namespaceName%22%3A%22tech.sleuth%22%2C%22notificationId%22%3A7908%7D%2C%7B%22namespaceName%22%3A%22tech.service.urls%22%2C%22notificationId%22%3A14602%7D%2C%7B%22namespaceName%22%3A%22tech.acolyte%22%2C%22notificationId%22%3A3883%7D%2C%7B%22namespaceName%22%3A%22tech.msg.sdk%22%2C%22notificationId%22%3A12835%7D%5D HTTP/1.1: null}{User-Agent: Java/1.8.0_275}{Host: 192.168.4.117:15422}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
[2022-01-04 16:53:05.917][DEBUG][Apollo-RemoteConfigLongPollService-1|sun.net.www.protocol.http.HttpURLConnection|log] - sun.net.www.MessageHeader@705e3bb010 pairs: {null: HTTP/1.1 304 Not Modified}{Server: Apache-Coyote/1.1}{X-Content-Type-Options: nosniff}{X-XSS-Protection: 1; mode=block}{Cache-Control: no-cache, no-store, max-age=0, must-revalidate}{Pragma: no-cache}{Expires: 0}{X-Frame-Options: SAMEORIGIN}{X-Application-Context: apollo-configservice:github:15422}{Date: Tue, 04 Jan 2022 08:53:05 GMT}
[2022-01-04 16:53:05.921][DEBUG][Apollo-RemoteConfigLongPollService-1|sun.net.www.protocol.http.HttpURLConnection|log] - sun.net.www.MessageHeader@376245395 pairs: {GET /notifications/v2?cluster=k8s&dataCenter=k8s&appId=xyqb-user2&ip=192.168.28.10&notifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A14599%7D%2C%7B%22namespaceName%22%3A%22tech.common%22%2C%22notificationId%22%3A9472%7D%2C%7B%22namespaceName%22%3A%22cash.common%22%2C%22notificationId%22%3A2208%7D%2C%7B%22namespaceName%22%3A%22tech.sleuth%22%2C%22notificationId%22%3A7908%7D%2C%7B%22namespaceName%22%3A%22tech.service.urls%22%2C%22notificationId%22%3A14602%7D%2C%7B%22namespaceName%22%3A%22tech.acolyte%22%2C%22notificationId%22%3A3883%7D%2C%7B%22namespaceName%22%3A%22tech.msg.sdk%22%2C%22notificationId%22%3A12835%7D%5D HTTP/1.1: null}{User-Agent: Java/1.8.0_275}{Host: 192.168.4.117:15422}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
[2022-01-04 16:53:14.190][INFO][SIGINT handler|cn.quantgroup.tech.shutdown.DefaultSignalHandler|handle] - 开始执行停止服务
[2022-01-04 16:53:14.192][INFO][SIGINT handler|cn.quantgroup.tech.shutdown.DefaultSignalHandler|handle] - undertowShutdown 停止接收请求
[2022-01-04 16:53:14.192][INFO][SIGINT handler|cn.quantgroup.tech.shutdown.DefaultSignalHandler|handle] - 即将执行 @PreDestroy 方法
[2022-01-04 16:53:14.192][INFO][Thread-33|org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext|doClose] - Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@555cf22: startup date [Tue Jan 04 16:50:00 CST 2022]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@4e096385
[2022-01-04 16:53:14.194][INFO][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|stop] - Stopping beans in phase 2147483647
[2022-01-04 16:53:14.194][INFO][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|stop] - Stopping beans in phase 0
[2022-01-04 16:53:14.194][DEBUG][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|doStop] - Asking bean 'endpointMBeanExporter' of type [class org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter] to stop
[2022-01-04 16:53:14.195][DEBUG][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|run] - Bean 'endpointMBeanExporter' completed its stop procedure
[2022-01-04 16:53:14.195][DEBUG][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|doStop] - Asking bean '_org.springframework.integration.errorLogger' of type [class org.springframework.integration.config.ConsumerEndpointFactoryBean] to stop
[2022-01-04 16:53:14.195][INFO][Thread-33|org.springframework.integration.endpoint.EventDrivenConsumer|logComponentSubscriptionEvent] - Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
[2022-01-04 16:53:14.195][INFO][Thread-33|org.springframework.integration.channel.PublishSubscribeChannel|adjustCounterIfNecessary] - Channel 'xyqb-user2:8099.errorChannel' has 0 subscriber(s).
[2022-01-04 16:53:14.195][DEBUG][Thread-33|org.springframework.context.support.DefaultLifecycleProcessor|run] - Bean '_org.springframework.integration.errorLogger' completed its stop procedure
[2022-01-04 16:53:14.195][INFO][Thread-33|org.springframework.integration.endpoint.EventDrivenConsumer|stop] - stopped _org.springframework.integration.errorLogger
[2022-01-04 16:53:14.196][INFO][Thread-33|org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter|destroy] - Unregistering JMX-exposed beans on shutdown
[2022-01-04 16:53:14.196][INFO][Thread-33|org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter|unregisterBeans] - Unregistering JMX-exposed beans
[2022-01-04 16:53:14.197][INFO][Thread-33|org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler|shutdown] - Shutting down ExecutorService 'taskScheduler'
[2022-01-04 16:53:14.197][INFO][Thread-33|org.springframework.jmx.export.annotation.AnnotationMBeanExporter|destroy] - Unregistering JMX-exposed beans on shutdown
[2022-01-04 16:53:14.197][INFO][Thread-33|org.springframework.jmx.export.annotation.AnnotationMBeanExporter|unregisterBeans] - Unregistering JMX-exposed beans
[2022-01-04 16:53:14.198][DEBUG][Thread-33|org.apache.http.impl.conn.PoolingHttpClientConnectionManager|shutdown] - Connection manager is shutting down
[2022-01-04 16:53:14.198][DEBUG][Thread-33|org.apache.http.impl.conn.PoolingHttpClientConnectionManager|shutdown] - Connection manager shut down
[2022-01-04 16:53:14.199][INFO][Thread-33|org.apache.kafka.clients.producer.KafkaProducer|info] - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 30000 ms.
[2022-01-04 16:53:14.199][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.clients.producer.internals.Sender|debug] - [Producer clientId=producer-1] Beginning shutdown of Kafka producer I/O thread, sending remaining records.
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name connections-closed:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name connections-created:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name successful-authentication:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name failed-authentication:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name bytes-sent-received:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name bytes-sent:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name bytes-received:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name select-time:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name io-time:
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--2.bytes-sent
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--2.bytes-received
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--2.latency
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--3.bytes-sent
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--3.bytes-received
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--3.latency
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--1.bytes-sent
[2022-01-04 16:53:14.200][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--1.bytes-received
[2022-01-04 16:53:14.201][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node--1.latency
[2022-01-04 16:53:14.201][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node-3.bytes-sent
[2022-01-04 16:53:14.201][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node-3.bytes-received
[2022-01-04 16:53:14.201][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.common.metrics.Metrics|removeSensor] - Removed sensor with name node-3.latency
[2022-01-04 16:53:14.201][DEBUG][kafka-producer-network-thread | producer-1|org.apache.kafka.clients.producer.internals.Sender|debug] - [Producer clientId=producer-1] Shutdown of Kafka producer I/O thread has completed.
[2022-01-04 16:53:14.201][DEBUG][Thread-33|org.apache.kafka.clients.producer.KafkaProducer|debug] - [Producer clientId=producer-1] Kafka producer has been closed
[2022-01-04 16:53:14.201][DEBUG][Thread-33|org.springframework.context.annotation.CommonAnnotationBeanPostProcessor|invokeDestroyMethods] - Invoking destroy method on bean 'baseDestroyHandler': private void cn.quantgroup.tech.shutdown.BaseDestroyHandler.stopOther()
[2022-01-04 16:53:14.201][INFO][Thread-33|cn.quantgroup.tech.shutdown.BaseDestroyHandler|stopOther] - 我什么都没做, other stopped
[2022-01-04 16:53:14.201][DEBUG][Thread-33|org.springframework.context.annotation.CommonAnnotationBeanPostProcessor|invokeDestroyMethods] - Invoking destroy method on bean 'baseDestroyHandler.DestroyMessageQueueListener': private void cn.quantgroup.tech.shutdown.BaseDestroyHandler$DestroyMessageQueueListener.stopRabbitMQ()
[2022-01-04 16:53:14.202][INFO][Thread-33|cn.quantgroup.tech.shutdown.BaseDestroyHandler|stopRabbitMQ] - MQ listener stopped
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment