# 加密单个字段
加密单个字段指对表的一个字段逐个配置存量历史数据加、解密的功能。
当一个系统需要加密的字段较少时，逐字段、逐表配置加密时，或者第一次初步体验数据库加密系统时，可以加密单个字段。
#### 前提条件
已完成[加密基本信息预览](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0130.html)。
#### 操作步骤
1. 在"字段加密配置"页签，选择"编辑"，页面展示为以下状态。 
   只有在编辑状态下，密钥关键字下方的"设置"才可以操作，如[图1]所示。
   图1加密配置状态   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002729745616.png "点击放大")
   并非所有的字段后都有"设置"，这是因为并非所有的字段类型都支持列级别的内容加密。例如：上图中DATETIME、DECIMAL等数据类型不支持加密。
   
   
2. 这时，单击"设置"，就可以当前字段设置加密算法、加密密钥，如[图2]所示，进入加密规则（算法）选择窗口。加密规则配置的参数如[表1]所示。
   
   图2字段加密配置   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002759305241.png "点击放大")
    表1设置解密规则参数说明 
   | 参数     | **说明**                                                                                                                                                |
   |:---|:---|
   | 选择加密规则 | 选择当前字段使用的加密算法和加密工作模式，在本系统中叫做加密规则。 如何设置加密规则，请参见[加密规则](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0159.html)。 |
   | 选择加密密钥 | 选择当前字段使用的加密密钥。加密密钥是在加密规则中进行管理的。 如何设置加密密钥，请参见[加密规则](https://support.huaweicloud.com/usermanual-dbss/dbss_03_0159.html)。   |
   | 加密位置   | 根据业务需要，选择加密后字符串保留的部分明文字符。 例如：身份证号码：130602199606071510。 保留前6位不加密，即对"130602"不加密。              |
   | 源长度    | 这是一个加密长度模拟计算器。 加密后的数据长度根据算法不同而不同。因此，如果没选择加密规则（算法），则"计算"没法执行。例如：输入：源长度20，单击"计算"。                                          |
   | 支持模糊查询 | 勾选后，加密后数据可支持模糊查询，但是密文长度会占用更多位数。                                                                                                                       |
   | 重置     | 取消所有的设置的加密规则和加密密钥。                                                                                                                                    |
   | 确定     | 该字段设置为使用选择的加密规则和密钥进行加密。                                                                                                                               |
   | 取消     | 关闭窗口，不做任何修改。                                                                                                                                          |
      
   
   
3. 单击"确定规则"后，返回"加密策略设置"页面，查看加密设置是否配置生效。 
   如[图3]所示红色标注字段，已经对该字段设置了加密算法和加密密钥。
   图3执行加密   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002729905472.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-dbss/public_sys-resources/note_3.0-zh-cn.png)
   "源长度"：指该字段存放数据的最大长度或者在设置加密算法时手工设置的长度。
   因为数据加密会扩展数据长度，同时也需要知道该扩展后字段的最大长度，因此需要知道这个长度是多少。
   
   
4. 单击"保存"。"加密"由白色变成黑色可操作状态，如[图4]所示。
   
   图4保存后状态   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002729745620.png "点击放大")
   
   
5. 单字段存量历史数据加密。 
   在加密软件部署前，数据库中存在或多或少的存量历史数据，在部署插件或者代理之前，需要对存量历史数据进行加密。系统提供了自动化的对存量历史数据加密的方法。
   单击"加密"，系统自动开始对存量历史数据开始加密。
   ![](https://support.huaweicloud.com/usermanual-dbss/public_sys-resources/note_3.0-zh-cn.png)
   存量历史数据加密，系统自动完成了三部分操作：
   1. 创建一个备份列，备份需要加密的原始数据，预防出现执行意外。
   
   2. 因加密会增加数据的长度，系统会自动创建扩字段SQL语句，并执行。
   
   3. 对存量历史数据进行加密。
    
   
   
6. 加密过程是个复杂、耗时过程，需要花费大量时间。在加密过程中，可以单击"详情"，查看加密进度和服务执行日志，如[图5]所示。
   
   图5加密详情   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002759305243.png "点击放大")
   - **停止加解密**：当任务处于加密或解密过程中，如果需要停止加密或者解密，可单击"停止加解密"中断当前操作。后续如果想继续加密/解密，可单击字段操作列中的"加密"或"解密"对该字段继续进行加密/解密。
   
   - **缓存元数据**：这是一个产品自身安全功能，用于缓存资产库的元数据，防止自身的API伪造。
   
   
   
   
7. 加密完成后，用户通过SQL工具查询数据库数据，确认明文数据已加密，如[图6]所示，NAME字段已通过加密软件进行了加密。
   
   图6SQL工具查询已加密数据   
   ![](https://support.huaweicloud.com/usermanual-dbss/zh-cn_image_0000002759385133.png "点击放大")
   
   
 
#### 执行字段解密
对存量历史数据，对数据加密后，有时也需要对数据进行解密。
当数据量比较大时，存量历史数据的解密也是非常耗时的工作。
1. 对于已经加密成功的字段，可以单击"解密"，执行数据解密。
2. 解密完成后，可查看数据库，对应数据均解密成明文。
 
#### 相关操作
- 生成多余列：执行加密后，系统会在表中生成"原字段名+_copy"的列，用于数据备份和审计等其他操作。

- 删除多余列：在执行解密之前，需要用户手动单击"删除多余列"，执行删除操作。

- 字段密钥配置：加密系统暂时支持主流的字符串类型数据加密，其他类型暂时无法设置密钥和执行加解密（比如日期和数字类型等）。
 
