數據庫字段加密

目的:身份證號在數據庫中以密文的形式存儲。

 

步驟流程:

  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);

         }

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章