数据库字段加密

目的:身份证号在数据库中以密文的形式存储。

 

步骤流程:

  1. 在数据库database中,为表a_table添加name、mobile、idNo三个字段,便于直观查询数据。

alter table a_table add name varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', add mobile varchar(16) NOT NULL DEFAULT '' COMMENT '手机号',add id_no varchar(24) NOT NULL DEFAULT '' COMMENT '身份证号';

 

  1. 在数据库database中,为表b_table添加idNo_des、idNo_asterisk。用来对身份证号进行密文存储。

alter table b_table add id_no_des varchar(64) NOT NULL DEFAULT '' COMMENT '身份证号des加密', add id_no_asterisk varchar(24) NOT NULL DEFAULT '' COMMENT '身份证号掩码';

 

  1. 修改实体类ATable.java、BTable.java,增加相应的字段。
  2. 修改ATableMapper.xml、BTableDetailMapper.xml文件,增加相应字段的增删改查的类型处理方法。

typeHandler="com.handler.IdNoDesHandler"

 

  1. 配置mybatis的TypeHandler.

<bean id="myBatisSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

           <property name="dataSource" ref="shuffle-dataSource" />

           <property name="mapperLocations" value="classpath*:mapper/*Mapper.xml" />

           <!--typeHandler注入-->

           <property name="typeHandlersPackage" value=" com.handler.IdNoDesHandler " />

         </bean>

8、编写IdDesHandler处理类
      

public class IdNoDesHandler extends BaseTypeHandler {

 

         @Override

         public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)

                            throws SQLException {

                   ps.setString(i, DESUtils.encrypt((String)parameter));

         }

         @Override

         public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {

                   String columnValue = rs.getString(columnName);

                   return DESUtils.decrypt(columnValue);

         }

         @Override

         public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {

                   String columnValue = rs.getString(columnIndex);

                   return DESUtils.decrypt(columnValue);

         }

         @Override

         public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {

                   String columnValue = cs.getString(columnIndex);

                   return DESUtils.decrypt(columnValue);

         }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值