查看“验证程序”的源代码
←
验证程序
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
验证程序是一种特殊的微应用,用于披露数据某些维度的信息,以供买方参考。通常,验证程序不会披露额外的信息,这是由隐私计算技术保证的。 本文说明了典枢中各种验证程序的细节信息。 ''未来,典枢还将支持用户自定义验证程序。'' === 概述 === 验证程序在典枢平台提供的可信执行环境(TEE)中执行,TEE保证了验证程序的执行过程是不可见,包括内存的数据、处理器的状态等,从而保证了典枢平台方无法获得非相关的数据。 验证程序的输入为卖方的加密数据,该数据在验证程序内解密,解密所使用的密钥(枢私钥)使用验证程序内的密钥加密后传输到验证程序内部。因此,典枢平台无法获得用户的密钥或卖方提供的数据。 验证程序的输出为申请方的枢公钥加密后的报告。当申请方为平台时,验证报告在典枢平台上公开;当申请方为用户时,该报告仅对用户可见。不同的验证程序所生成的验证报告内容也不尽相同。通常,验证程序是针对特定的数据格式的,例如针对CSV格式的数据;也可以针对更加特定的情况。一个数据格式下可能存在多个不同的验证程序,用于展示数据的不同信息。 验证报告是基于数据和验证程序生成的,因此是客观、真实的,能够直接反映数据本身的情况。例如验证报告中可以包含视频的截图,买方可以从截图中知道视频是否和描述信息一致;验证报告中还可以包含表格的统计信息,买方可以从统计信息中知道表格中的数据是否是伪造的。这些验证报告都能够为买方的购买决策提供强力的支持。 以下是典枢平台上的一些验证程序。 === CSV统计程序 === [https://github.com/YeeZTech/verification-programs/tree/main/src/dianshu2.0/csv 开源地址] 传入csv格式的文件,本算法将对文件的数据进行质量评估的统计,并在算法结束后将统计结果输出。统计结果包括csv的行数,列数,总缺失值数,列缺失值数量统计、行缺失值数量统计。算法将以列数最多的行为起点统计缺失值情况。 CSV统计程序运行后输出结果的结构如下所示:<syntaxhighlight lang="json" line="1"> { "rows": 58, "cols": 6, "totalNulls": 48, "NullProportion": 13.79, "col_nulls": [ { "null_num": 6, "count": 1 }, { "null_num": 7, "count": 1 }, { "null_num": 8, "count": 2 }, { "null_num": 9, "count": 1 }, { "null_num": 10, "count": 1 } ], "row_nulls": [ { "null_num": 0, "count": 34 }, { "null_num": 1, "count": 16 }, { "null_num": 2, "count": 2 }, { "null_num": 3, "count": 1 }, { "null_num": 4, "count": 1 }, { "null_num": 5, "count": 3 }, { "null_num": 6, "count": 1 } ] } </syntaxhighlight>输出的内容有 * '''<code>rows</code>''':csv中的总行数 * '''<code>cols</code>''':csv中的总列数 * '''<code>totalNulls</code>''':总缺失值的数量 * '''<code>NullProportion</code>''':缺失值百分比,该缺失值精确到小数点后两位。 * '''<code>col_nulls</code>''':每列中有多少个缺失行的数量统计 ** '''<code>null_num</code>''':表示缺失x行 ** '''<code>count</code>''':缺失x行的数据共有多少列 '''注''':若缺失x行的数量为0时'''<code>(count=0)</code>,将不会输出''';<code>null_num > 1000</code> 时的统计将统一存储在<code>null_num=1001</code>的条目中。这两个条件对缺失列的数据统计同样适用。 * '''<code>row_nulls</code>''':每行中有多少个缺失列的数量统计 ** '''<code>null_num</code>''':表示缺失x列 ** '''<code>count</code>''':缺失x列的数据共有多少行 === 文本抽样程序 === 传入txt格式的文本文件,本算法将对txt文件进行质量评估,将txt文件的前中后位置上的部分内容打包输出到一个json文件中。目前的算法中,当输入txt文件后,将返回该txt内容的前10%内容(最多150字),中间20%内容(最多300字),尾部10%内容(最多150字)作为质量验证报告。 注:在分析中,一个“字”表示一个 英文字母/汉字/符号/操作符 等内容。 文本抽样运行后输出结果的结构如下所示:<syntaxhighlight lang="json"> { "head": "#include \"user_type.h\"\n#include \"string_process.h\"\n#include \"ypc/core_t/analyzer/data_source.h\"\n#include \"ypc/stbox/ebyte.h\"\n#include \"ypc/stbox/stx_c", "mid": "一个batch的所需长度\n int start_pos = total_size / 2 - 50; // 中间的100字节的起始位置\n int mid_batch_no = start_pos / batch_max_size; // 中间的100字节所在的batch的编号\n \n start_pos = start_pos % batch_max_size; // 中间的100字节的起始位置在batch中的位置\n\n LOG(INFO) << \"Batch Num: \" << batch_num;\n LOG(INFO) << \"Start Position:", "tail": " process_string(middle_100) + \"\\\"}\";\n return result;\n }\n\nprotected:\n std::vector<std::shared_ptr<ypc::data_source_with_dhash>> m_datasources;\n};\n", "total": "3474" } </syntaxhighlight>输出的内容有: * '''<code>head</code>''':txt文件头部10%(最多150字)内容 * '''<code>mid</code>''':txt文件中部20%(最多300字)内容 * '''<code>tail</code>''':txt文件尾部10%(最多150字)内容 * '''<code>total</code>''':文本文件中的总字数统计 以上例子中展示的是一个包含代码内容的txt文件,除了普通文字内容,代码中包含了更多的换行符以及引号,换行符将在结果中以''''<code>'\n'</code>'''的形式被输出内容中的引号为了防止json解析失败也会以'''<code>'\"'</code>'''的格式输出。 === 视频抽样程序 === 传入mp4格式的文件,本算法将读取mp4的内容并截取其中的数帧的画面编码成base64格式的json数据输出,输出图片不固定,在每次运行时都将随机选取图片输出,目前规定输出的内容视频总时间、三张视频截图(以Base64编码表示)以及其三张截图的截取时间, 输出json格式如下:<syntaxhighlight lang="json"> { totalDuration: // 总时长 positions: [ { duration: // 时间点 picture: // 截取图片 }, { duration: picture: }, { duration: picture: } ] } </syntaxhighlight> * '''<code>totalDuration</code>''':该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。 * '''<code>positions</code>''': ** '''<code>duration</code>''':截取图片对应时间(以秒为单位表示)。 ** '''<code>picture</code>''':该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。 === PDF验证程序 === 传入PDF格式文件,本算法将对pdf格式的富文本数据进行质量验证,将随机抽取该数据的三页,并对抽取结果进行水印和模糊处理,(如果不足三页,则将全部页进行处理)最终生成数据质量验证报告。 质量验证报告的json格式如下:<syntaxhighlight lang="json"> { "pages": [ { "page_content": "/9j/4AAQSkZJRgABAQEBAQIBAQECAgICAg......QAUUUUAFFFFABRRRQB//Z", "page_number": "1" }, { "page_content": "/9j/4AAQSkZJRgABAQEBAQIBAQECAgICAg......QAUUUUAFFFFABRRRQB//Z", "page_number": "2" } ], "total_pages": "2" } </syntaxhighlight> *'''<code>total_pages</code>''':该字段为PDF文件的总页数。 * '''<code>pages</code>''': ** '''<code>page_content</code>''':已经处理好的PDF抽取页面的base64编码,可通过解码获取抽取的PDF页面截图(已添加水印)。 ** '''<code>page_number</code>''':抽取的PDF对应的页码
返回至“
验证程序
”。
导航菜单
个人工具
创建账户
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
数据集市
技术原理
历史版本
术语列表
隐私计算基础介绍
其他
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息