Csv格式文件身份证号码没有达到脱敏的效果

您好: 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)

  1. 如果什么都不进行替换, 结果如下:
    image.png (29.8 KB)

  2. 如果对 数字 123 进行替换, 结果正常, 显示如下:
    image.png (24.8 KB)

  3. 如果对 身份证号371421198801013456 替换成 3***6 身份证号450104198205310514显示有问题, 身份证号371421198801013456替换有问题。 显示如下:
    image.png (34.7 KB)

  4. 使用execl 格式 对身份证号371421198801013456 进行替换没有问题, 显示如下。
    image.png (10.3 KB)

@402357137

我们最终成功地重新解决了这个问题。因此,我们已将其记录在 ID 为 REDACTIONJAVA-158 的内部问题跟踪系统中。如果有任何更新,您会收到通知。

好的,谢谢! 如果有更新,请及时通知我。

@402357137

不客气。是的,如果有任何进展,我们一定会通知您。

您好, 这个问题有新的更新吗?

@402357137

我们仍在调查这个问题。如果有任何更新,您会收到通知。

@402357137

这个问题的原因是科学记数法。任何大数都在这个表格中存储和使用。你在输出文件中看到它:4.50104E+17 代替 450104198205310514 和 3.71421E+17 代替 371421198801013456。123 是一个小数字,所以它不使用这种表示法。你不能用数字来避免这种情况,唯一的办法就是把这样的数字当作文本。为此,您可以在数字中使用双引号 (“'”),例如",‘371421198801013456’," - 在这种情况下,数字被视为文本并被很好地编辑。

@Atir_Tahir
您好, 我做了以下两种测试:

  1. 把.csv重新命名为.txt格式的文档, 可以正常脱敏。
  2. 按照你提供的方式, 将 身份证号 用 双引号("")进行处理, 可以正常脱敏。

我们作为商业化产品, 我们没办法要求我们的客户将他们所有的大整数全部用 双引号("") 进行处理, 我们也是贵公司的付费用户, 希望能得到贵公司进一步的支持和帮助, 非常感谢!

@402357137

大数会自动转换为“科学记数法”(例如 3.71421E+17)以简化数学运算,例如计算总和、平均值等。ID 实际上不是数字,即使它们只包含数字,因为它们是应该只是为了比较。所以有两种选择:

  • 将 CSV 文件视为没有任何结构的纯文本
  • 将数字文本标记为其中的文本

如果您不控制 CSV 文件的来源,但需要电子表格功能,则可以对它们进行预处理以检测类似 ID 的数字并将它们包装成引号/撇号。

@Atir_Tahir

您好, 针对csv格式 您这边提到的方案 我 做了简单测试。 测试结果无法满足我的需求,请帮忙协助处理,非常感谢!

  1. 对大整数加双引号("")处理后 和没有双引号 效果一样。
    image.png (49.0 KB)
  2. 对大整数加上单引号(’’) 进行预处理后可以脱敏, 但是使用office或wps 打开后显示多了单引号
    image.png (41.5 KB)
  3. 如果csv格式只有一个数据, 脱敏报错
    image.png (3.6 KB)
    image.png (20.9 KB)
    image.png (17.8 KB)

测试结果 详情 见下面附件内容:
csv脱敏结果整理.docx (258.8 KB)

1 Like

@402357137

我们正在进一步调查这种情况。当有任何更新时,您会收到通知。

@402357137

  1. 如果您在数字前后添加撇号“’”,则撇号将出现在编辑文件中 - 它看起来像是预期的行为。
  2. 只有一个数字的 CSV 文件无法以 CSV 格式打开。这是格式检测的问题,因为此文件没有分隔符、可识别的结构等。我们正在使用票证 ID REDACTIONJAVA-159 调查此问题。作为一种解决方法,可以将此类文件编辑为纯文本。

@Atir_Tahir
对于使用撇号 处理我这边做了测试, 使用wps 和 office 显示结果 稍有不同, 但两种软件显示都无法满足需求。

  1. 使用office打开 显示结果如图
    image.png (24.0 KB)
    使用文本编辑器打开显示结果如下图:
    image.png (41.9 KB)

可以对比看出, 在大整数前面手动加上撇号保存后 和 office大整数自带的撇号 在文本编辑器上显示一模一样, 但使用office打开显示不一样。 脱敏后有显示撇号-不满足需求

  1. 使用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. 即使用户数据按照列替换而且非常规范, 我们也无法预判 管理员 配置的 替换规则 中是否有 撇号。(我们无法识别出 具体的撇号 是 管理员配置脱敏后的结果 还是 我们预处理添加的撇号)

举例说明:
假设用户的数据格式如下:
数字1,其他,数字2
‘数字3’,数字4,'数字5

  1. 预处理时 对于数字3 数字4 数字5要不要预处理, 如果处理后, 如何区分他们和数字1和数字2 那个是用户的原始数据,那个是我们预处理添加的。

  2. 如果 替换规则如下: 数字1 替换成 '数字11 数字2 替换成 数字22
    这样脱敏后的结果显示如下:
    ''数字11, 其他, '数字22
    ‘数字3’, '数字4,'数字5

对这样的规则 进行脱敏后 我不清楚 该如何 还原 用户的原始数据。