Commit 464d1d64 authored by killer's avatar killer

phone数据加密

parent d26b7248
...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.entity; ...@@ -2,7 +2,7 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.BizType; import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.Relation; import cn.quantgroup.user.enums.Relation;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.model.Tuple; import cn.quantgroup.xyqb.model.Tuple;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -33,7 +33,7 @@ public class Contact extends BaseEntity implements Serializable { ...@@ -33,7 +33,7 @@ public class Contact extends BaseEntity implements Serializable {
@Column(name = "name") @Column(name = "name")
private String name; private String name;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String phoneNo; private String phoneNo;
@Column(name = "biz_type") @Column(name = "biz_type")
private BizType bizType = BizType.CASH; private BizType bizType = BizType.CASH;
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
...@@ -45,14 +45,14 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable { ...@@ -45,14 +45,14 @@ public class ModifyPhoneNo extends BaseEntity implements Serializable {
* 原手机号码 * 原手机号码
*/ */
@Column(name = "prev_phone_no") @Column(name = "prev_phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String prevPhoneNo; private String prevPhoneNo;
/** /**
* 新手机号码 * 新手机号码
*/ */
@Column(name = "cur_phone_no") @Column(name = "cur_phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String curPhoneNo; private String curPhoneNo;
/** /**
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -28,7 +28,7 @@ public class User extends BaseEntity implements Serializable { ...@@ -28,7 +28,7 @@ public class User extends BaseEntity implements Serializable {
* 手机号 * 手机号
*/ */
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String phoneNo; private String phoneNo;
/** /**
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.motan.retbean.XUserDetail; import cn.quantgroup.motan.retbean.XUserDetail;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.model.Gender; import cn.quantgroup.xyqb.model.Gender;
import cn.quantgroup.xyqb.model.IdType; import cn.quantgroup.xyqb.model.IdType;
import lombok.Getter; import lombok.Getter;
...@@ -10,7 +10,6 @@ import lombok.ToString; ...@@ -10,7 +10,6 @@ import lombok.ToString;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Optional; import java.util.Optional;
/** /**
...@@ -30,7 +29,7 @@ public class UserDetail extends BaseEntity implements Serializable { ...@@ -30,7 +29,7 @@ public class UserDetail extends BaseEntity implements Serializable {
private Long userId; private Long userId;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String phoneNo; private String phoneNo;
@Column(name = "name") @Column(name = "name")
......
...@@ -2,13 +2,12 @@ package cn.quantgroup.xyqb.entity; ...@@ -2,13 +2,12 @@ package cn.quantgroup.xyqb.entity;
import cn.quantgroup.user.enums.MaritalStatus; import cn.quantgroup.user.enums.MaritalStatus;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.*; import lombok.*;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp;
@Data @Data
@Entity @Entity
...@@ -25,7 +24,7 @@ public class UserSpouse extends BaseEntity implements Serializable { ...@@ -25,7 +24,7 @@ public class UserSpouse extends BaseEntity implements Serializable {
private Long userId; private Long userId;
@Column(name = "spouse_phone") @Column(name = "spouse_phone")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String spousePhone; private String spousePhone;
@Column(name = "spouse_name") @Column(name = "spouse_name")
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -29,7 +29,7 @@ public class UuidPhoneMapping implements Serializable { ...@@ -29,7 +29,7 @@ public class UuidPhoneMapping implements Serializable {
private String uuid; private String uuid;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String phoneNo; private String phoneNo;
......
package cn.quantgroup.xyqb.entity; package cn.quantgroup.xyqb.entity;
import cn.quantgroup.xyqb.entity.converter.EncryptConverter; import cn.quantgroup.xyqb.entity.converter.PhoneEncryptConverter;
import cn.quantgroup.xyqb.util.EmojiUtil; import cn.quantgroup.xyqb.util.EmojiUtil;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
import java.sql.Timestamp;
/** /**
* Created by 11 on 2017/1/17. * Created by 11 on 2017/1/17.
...@@ -24,7 +23,7 @@ public class WechatUserInfo extends BaseEntity implements Serializable { ...@@ -24,7 +23,7 @@ public class WechatUserInfo extends BaseEntity implements Serializable {
@Column(name = "open_id") @Column(name = "open_id")
private String openId; private String openId;
@Column(name = "phone_no") @Column(name = "phone_no")
@Convert(converter = EncryptConverter.class) @Convert(converter = PhoneEncryptConverter.class)
private String phoneNo = ""; private String phoneNo = "";
@Column(name = "app_name") @Column(name = "app_name")
private String appName = "xyqb"; private String appName = "xyqb";
......
...@@ -2,37 +2,48 @@ package cn.quantgroup.xyqb.entity.converter; ...@@ -2,37 +2,48 @@ package cn.quantgroup.xyqb.entity.converter;
import cn.quantgroup.security.AESEncryption; import cn.quantgroup.security.AESEncryption;
import cn.quantgroup.xyqb.util.ApplicationContextHolder; import cn.quantgroup.xyqb.util.ApplicationContextHolder;
import cn.quantgroup.xyqb.util.ValidationUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.persistence.AttributeConverter; import javax.persistence.AttributeConverter;
import javax.persistence.Converter; import javax.persistence.Converter;
/** /**
* 字段加解密转换器 * 手机号字段加解密转换器
* <b>此处只对有效手机号处理</b>
* *
* @author killer * @author killer
* @date 2022年01月04日 * @date 2022年01月04日
**/ **/
@Slf4j
@Converter @Converter
public class EncryptConverter implements AttributeConverter<String, String> { public class PhoneEncryptConverter implements AttributeConverter<String, String> {
@Override @Override
public String convertToDatabaseColumn(String entityAttribute) { public String convertToDatabaseColumn(String entityAttribute) {
/* 加密 */ /* 非手机号原样保存 */
if (StringUtils.isBlank(entityAttribute)) { if (!ValidationUtil.validatePhoneNo(entityAttribute)) {
return entityAttribute; return entityAttribute;
} }
/* 加密 */
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class); AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
return aesEncryption.encryptBase64(entityAttribute); return aesEncryption.encryptBase64(entityAttribute);
} }
@Override @Override
public String convertToEntityAttribute(String databaseColumn) { public String convertToEntityAttribute(String databaseColumn) {
/* 解密 */ /* 明文手机号或者空原样返回 */
if (StringUtils.isBlank(databaseColumn)) { if (ValidationUtil.validatePhoneNo(databaseColumn) || StringUtils.isBlank(databaseColumn)) {
return databaseColumn; return databaseColumn;
} }
/* 解密 */
AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class); AESEncryption aesEncryption = ApplicationContextHolder.getBean(AESEncryption.class);
return aesEncryption.decryptBase64(databaseColumn); try {
return aesEncryption.decryptBase64(databaseColumn);
} catch (IllegalArgumentException e) {
log.warn("手机号解密失败, 数据存在问题, 原样返回数据:{}", databaseColumn);
}
return databaseColumn;
} }
} }
This diff is collapsed.
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