您好: csv格式文件 身份证号码 经过脱敏后没有达到 预期效果。
版本:GroupDocs.Redaction_21.12-Java.zip
测试代码:
Redactor redactor = new Redactor(redactionOptions.getSourcePath());
List redactions = getRedactions(redactionOptions);
RedactorChangeLog redactorChangeLog = redactor.apply(redactions.toArray(new Redaction[]{}));
if (redactorChangeLog.getStatus() != RedactionStatus.Failed) {
RasterizationOptions rasterizationOptions = new RasterizationOptions();
rasterizationOptions.setEnabled(false);
redactor.save(outputStream, rasterizationOptions);
httpServletResponse.setStatus(HttpServletResponse.SC_OK);
}
文件编码: UTF-8
替换内容:
371421198801013456 替换成 3***6
450104198205310514 替换成 4***4
替换后的结果:
3.7142119880101299E17
4.5010419820531002E17
源文件:
member.7z (304 Bytes)
替换后的文件
member_redaction.7z (326 Bytes)
@402357137
您能否分享完整的源代码或示例控制台应用程序?你是如何替换内容的?请看一下这个截图.png (35.3 KB)。我们在源文件中找不到 450104198205310514。实际上是450104198205310000。
如果您使用一些屏幕截图详细说明问题,我们将不胜感激。
您好,我又重新测试了下。 结果还是一样,可以稳定复现。
测试代码:
image.png (24.5 KB)
测试源文件: 在原来的源文件中添加一列(需要使用文本编辑器打开,office显示会有问题)
image.png (7.7 KB)
-
如果什么都不进行替换, 结果如下:
image.png (29.8 KB)
-
如果对 数字 123 进行替换, 结果正常, 显示如下:
image.png (24.8 KB)
-
如果对 身份证号371421198801013456 替换成 3***6 身份证号450104198205310514显示有问题, 身份证号371421198801013456替换有问题。 显示如下:
image.png (34.7 KB)
-
使用execl 格式 对身份证号371421198801013456 进行替换没有问题, 显示如下。
image.png (10.3 KB)
@402357137
我们最终成功地重新解决了这个问题。因此,我们已将其记录在 ID 为 REDACTIONJAVA-158 的内部问题跟踪系统中。如果有任何更新,您会收到通知。
@402357137
我们仍在调查这个问题。如果有任何更新,您会收到通知。
@402357137
这个问题的原因是科学记数法。任何大数都在这个表格中存储和使用。你在输出文件中看到它:4.50104E+17 代替 450104198205310514 和 3.71421E+17 代替 371421198801013456。123 是一个小数字,所以它不使用这种表示法。你不能用数字来避免这种情况,唯一的办法就是把这样的数字当作文本。为此,您可以在数字中使用双引号 (“'”),例如",‘371421198801013456’," - 在这种情况下,数字被视为文本并被很好地编辑。
@Atir_Tahir
您好, 我做了以下两种测试:
- 把.csv重新命名为.txt格式的文档, 可以正常脱敏。
- 按照你提供的方式, 将 身份证号 用 双引号("")进行处理, 可以正常脱敏。
我们作为商业化产品, 我们没办法要求我们的客户将他们所有的大整数全部用 双引号("") 进行处理, 我们也是贵公司的付费用户, 希望能得到贵公司进一步的支持和帮助, 非常感谢!
@402357137
大数会自动转换为“科学记数法”(例如 3.71421E+17)以简化数学运算,例如计算总和、平均值等。ID 实际上不是数字,即使它们只包含数字,因为它们是应该只是为了比较。所以有两种选择:
- 将 CSV 文件视为没有任何结构的纯文本
- 将数字文本标记为其中的文本
如果您不控制 CSV 文件的来源,但需要电子表格功能,则可以对它们进行预处理以检测类似 ID 的数字并将它们包装成引号/撇号。
@Atir_Tahir
您好, 针对csv格式 您这边提到的方案 我 做了简单测试。 测试结果无法满足我的需求,请帮忙协助处理,非常感谢!
- 对大整数加双引号("")处理后 和没有双引号 效果一样。
image.png (49.0 KB)
- 对大整数加上单引号(’’) 进行预处理后可以脱敏, 但是使用office或wps 打开后显示多了单引号
image.png (41.5 KB)
- 如果csv格式只有一个数据, 脱敏报错
image.png (3.6 KB)
image.png (20.9 KB)
image.png (17.8 KB)
测试结果 详情 见下面附件内容:
csv脱敏结果整理.docx (258.8 KB)
1 Like
@402357137
我们正在进一步调查这种情况。当有任何更新时,您会收到通知。
@Atir_Tahir
对于使用撇号 处理我这边做了测试, 使用wps 和 office 显示结果 稍有不同, 但两种软件显示都无法满足需求。
- 使用office打开 显示结果如图
image.png (24.0 KB)
使用文本编辑器打开显示结果如下图:
image.png (41.9 KB)
可以对比看出, 在大整数前面手动加上撇号保存后 和 office大整数自带的撇号 在文本编辑器上显示一模一样, 但使用office打开显示不一样。 脱敏后有显示撇号-不满足需求
- 使用wps打开显示结果如下图:
image.png (15.6 KB)
使用文本编辑器打开显示结果如下图:
image.png (15.7 KB)
可以看出在wps中 手动添加撇号 和 csv没有处理的源文件在 文本编辑器和wps显示结果都不一样。 脱敏后显示结果 仍然有 撇号 - 不满足需求。
1 Like
@402357137
感谢您分享更多详细信息。我们正在进一步调查这种情况。您的调查票 ID 是 REDACTIONJAVA-160。
@402357137
你是说应该去掉撇号吗?如果用户添加撇号,它们不会消失并且会保留下来,只有添加它们的人才能删除它们。
@Atir_Tahir
我们不可能要求用户手动添加撇号, 我们只能在后台 扫描用户数据, 给 大整数添加上撇号, 然后进行脱敏, 但是脱敏后我们在后台无法 清除撇号(因为我们无法区分这个撇号是我们自己添加的 还是 用户原始数据就存在的 或者是 脱敏后携带的), 这样用户收到脱敏后的数据 后 显示就会多了 撇号
@402357137
作为用户,我们将保留对文件的引用以及预处理更改列表,以便在后处理中删除它们。实际上,由于它是电子表格,因此更改将应用于整个列,而不是单个单元格,以将其类型从数字更改为文本。所以你所需要知道的是,在文件 X 中,列 M 和 N 已经过预处理。
@Atir_Tahir
- 我们无法预设 用户的数据一定是以 列 为单位 或者 每列中 每个单元格的数据都完全合规。
- 即使用户数据按照列替换而且非常规范, 我们也无法预判 管理员 配置的 替换规则 中是否有 撇号。(我们无法识别出 具体的撇号 是 管理员配置脱敏后的结果 还是 我们预处理添加的撇号)
举例说明:
假设用户的数据格式如下:
数字1,其他,数字2
‘数字3’,数字4,'数字5
-
预处理时 对于数字3 数字4 数字5要不要预处理, 如果处理后, 如何区分他们和数字1和数字2 那个是用户的原始数据,那个是我们预处理添加的。
-
如果 替换规则如下: 数字1 替换成 '数字11 数字2 替换成 数字22
这样脱敏后的结果显示如下:
''数字11, 其他, '数字22
‘数字3’, '数字4,'数字5
对这样的规则 进行脱敏后 我不清楚 该如何 还原 用户的原始数据。