可验证算法在招投标领域的专家“盲抽”中的标段识别码加密应用研究

news2024/10/6 8:14:58

摘要

在招投标过程中,标段(包)识别码的安全性至关重要。本文提出了一种基于可验证算法的标段识别码加密方法,以确保其在专家“盲抽”过程中的保密性和可信性。通过对不同表的标段识别码进行全量加密,并通过匹配验证其一致性,有效防范数据库层级的泄密和内鬼行为。本文详细描述了该算法的设计与实现,并探讨了其在实际应用中的效果和优势。本文纯技术层面,假设数据库保密工作未严格按照数据隔离的标准做的规范性防范措施。

关键词

招投标,标段识别码,加密算法,盲抽,数据安全,MD5

1. 引言

在招投标过程中,专家评审是决定中标单位的关键环节。很多地方试点专家“盲抽”和技术标“盲评”,极大的规避了招投标中串标的风险,原理上杜绝了串标的可能,现实中可能会因为管理或者网络安全等方面的因素形同虚设,本文就专家盲评在具体实施可能出现的风险给出解决方案。

2 专家盲抽风险

“专家盲抽”通常是在评审过程中,为了确保公平性和随机性,对评审专家进行随机抽取的过程。且要保证专家在评审前和评审时并不知道自己评审的项目是什么。本文只针对双盲中的专家盲抽进行阐述。现有系统基本上大多省份都已经做到可以随机抽取专家,且在应用层面上不让专家知道自己评审的项目是什么。风险存在与数据层面,举例说明。以安徽省招投标数据规范中的规定。项目标段标识码在注册信息,招标文件,招标公告等数据表中皆有,且级联,在专家抽取表中也存在此标段,因为数据库层面可以轻易获知专家所评审的项目是哪一个。

数据库层面的保密需要专业级别的保密措施,强如中国移动,腾讯,阿里巴巴,各类银行系统等大型企业有安全的保密措施,也未必能做到百分百保密,大多数地市的招投标系统没有专业级别的数据隔离和保密措施(内在管理风险)。加上招投标系统因异地评标,需运行在互联网中(外来风险),且经常需要在省地市交换数据,数据级别的数据泄露的可能性风险极大。因为为了一劳永逸,设计如下加密算法。

3 解决措施。

设计思路,数据级别,招标信息发布系统和 评标系统,专家抽取系统的标段识别码 ,如一致,很容易被人筛选出关联关系,所以只要通过算法对专家抽取系统的标段识别码进行加密,让不同数据表和系统中的标段识别码不一致,就可以杜彻底杜绝外在风险。而算法的保密性和周期性密钥的变更可以彻底杜绝内在风险。假设有三个系统,分别为 招标系统,专家系统,评标系统。

这三个系统分别按顺序有三个表格如下, 项目标段表, 专家抽取表,评标表

(我直接把Bidding Deadline投标截止时间放在各个表中,简化设计,现实中可能会存于其他关联表中,其他均采用此种简化设计,其他字段与算法无关省略)

 以前系统设计 三个表中的关系是 专家抽取表和评标文件表 中的section对应项目标段标的ID。 如明文,在数据级别中即可被人轻易关联,失去盲抽盲评的效果。

重新设计,项目标段表中增加一个section_id 和ID的区别在于,ID是项目标段在整个系统中和其他表做关联。section只和评标系统中的评标表和 专家抽取系统中的抽取表做隐性关联。

设计隐性关联,让其中的字段在数据级别毫无关联,但是可以通过算法建立关联。

设计不可逆非加密算法对 项目标段表 中的ID进行加密后,存储于专家抽取表和评标文件表。专家抽取表和评标文件表中的投标截取时间存储一个

4 可验证算法设计

4.1 加密算法

设计一个算法进行不可逆加密,选择最为简单常用的md5+key算法。或者其他方法均可,要求不可逆算法。

算法表述为function 加密算法(项目标段表:ID,key )key采用一个10位以上复杂密码。

设计3个KEY(key1,key2,key3)

采用不同KEY加密得到的密文存入不同系统不同的表中的sectionID中。

加密算法(项目标段表:ID,key1)--》项目标段表.section_Id(直接同系统写入)

加密算法(项目标段表:ID,key2)--》专家抽取表.section_Id(远程推送)

加密算法(项目标段表:ID,key3)--》评标表.section_Id(远程推送)

注:加密算法(项目标段表:ID,key2) 加密算法(项目标段表:ID,key3)在招标系统中,计算出来,不保存。只做推送用。

专家抽取表.section_Id和评标表.section_Id的数值由 项目标段表所在的系统 经由算法得出。没有直接关联,除非调用项目标段表

  一个python实现实例

  

import hashlib

def md5_encrypt(plaintext, password):

    if len(password) != 10 or not any(c.islower() for c in password) or not any(c.isupper() for c in password):

        raise ValueError("Password must be 10 characters long with both uppercase and lowercase letters.")

    

    # 将明文与密码结合起来

    combined_text = plaintext + password

    

    # 计算 MD5 散列值

    md5_hash = hashlib.md5(combined_text.encode()).hexdigest()

    

    return md5_hash

# 示例使用

plaintext = "HelloWorld"

password = "Abcdef1234"  # 10 位包含大小写字母的密码

ciphertext = md5_encrypt(plaintext, password)

print("明文:", plaintext)print("密码:", password)print("密文:", ciphertext)

压力测试

#压力测试 100 万次

start_time = time.time()

for _ in range(1000000):

md5_encrypt(plaintext, password)

end_time = time.time()

elapsed_time = end_time - start_time

print(f"100万次加密操作的耗时: {elapsed_time} 秒")

压力测试100万次耗时 4.30微秒 (服务器)

 0.8868439197540283(i7-14900) 对性能影响很小。

4.2 隐性关联建立。

设计专家系统根据SECTION_ID匹配 招标系统中 项目标段ID的方法。

设计方法 得到招标系统标段ID方法(专家系统::标段识别码,投标截止时间)

(现有制度改进可以和算法匹配的地方:投标截止日期 为了增加混淆性, 如果从制度上实现,评标室设置所有专家报道时间为早于每天所有标评标时间的一个时间点。就可以增加保密性。)

根据截止时间把所有当前时间下 该招标系统中 项目标段表 ID 筛选出来 。对所有ID用KEY2依次进行加密算法。得到的值和专家系统ID 相同的,返回。

 示例 KEY 1=”Abc1234567” KEY 2=”Efg1234567” KEY 3=”Hij1234567”

 项目标段表

 ID

SectionID

93839665-0daf-404a-b2cb-7ff548e84c77

8f9c133404ec47b9646ed32054cc24e9

46c08c45-4a5d-4e04-9cf0-cfadf75ec0d1

818eb8af05bc0ad63914e0d858768c06

60d7170a-8a91-4f2c-b7e5-6b545919c01f

4ef01b020fc605d43dc5f64cfc4e386b

推送 专家抽取表内容为,

 ID

SectionID

。。自己定义唯一标识码

06f8904d1c8acd4919ea76635045746a

。。

57b13ac2daf0f428bc87d5ebd74ead52

。。

ef90df3d44745fcf96cdb27e45514f2f

评标表

 ID

SectionID

。。自己定义唯一标识码

1274b99327a2745516cd1b713a488a2d

。。

642233c4cd4a0baf34bef90ebb658037

。。

c26805631ff49c715e64708db2e03afd

  得到招标系统标段ID方法(“06f8904d1c8acd4919ea76635045746a”,“2024-01-01 09:00:00”)此方法返回”93839665-0daf-404a-b2cb-7ff548e84c77”

  具体算法过程我用文字表述:

1 根据截止日期在项目标段表筛选出所有项目标段表的ID数组 (得到ids= ["93839665-0daf-404a-b2cb-7ff548e84c77","46c08c45-4a5d-4e04-9cf0-cfadf75ec0d1","60d7170a-8a91-4f2c-b7e5-6b545919c01f"])

2 遍历数组对 每个ID以KEY2方式进行加密。

加密算法(“93839665-0daf-404a-b2cb-7ff548e84c77”,key2) =”06f8904d1c8acd4919ea76635045746a”

加密算法(46c08c45-4a5d-4e04-9cf0-cfadf75ec0d1”,key2=”57b13ac2daf0f428bc87d5ebd74ead52”

加密算法(“60d7170a-8a91-4f2c-b7e5-6b545919c01f”,key2)=”ef90df3d44745fcf96cdb27e45514f2f”

06f8904d1c8acd4919ea76635045746a 匹配的是93839665-0daf-404a-b2cb-7ff548e84c77 ,所以返回的是 93839665-0daf-404a-b2cb-7ff548e84c77 

5. 结论

可验证算法在招投标领域的专家“盲抽”应用,有效提高了评审过程的公正性和透明度,避免了传统专家选择方法中的潜在问题。未来,可以进一步优化算法,结合大数据和人工智能技术,提高专家选择的智能化和精准度。另外在管理中可以通过定期更换KEY,按月更换KEY在表格中增加月份字段。改进算法,进行更好级别的安全保密措施。

参考文献

招投标管理办法.

评审专家选择及管理规范.

随机抽取算法及其应用研究.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1900339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绿色金融相关数据合集(2007-2024年 具体看数据类型)

数据类型: 1.绿色债券数据:2014-2023 2.绿色信贷相关数据:2007-2022 3.全国各省及地级市绿色金融指数:1990-2022 4.碳排放权交易明细数据:2013-2024 5.绿色金融试点DID数据:2010-2023 数据来源&#…

RK3588 Android12实现UVC输出功能详解

首先需要在相关部分添加uvc的功能,这里参考一下:rockchip rk3588添加uvc及uvc,adb的复合设备_uvc.gs6-CSDN博客 setprop sys.usb.config none;setprop sys.usb.config uvc 或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb 使rk3588 进…

为什么需要服务器?服务器可以做些什么

目录 一、服务器和电脑的区别二、什么是SSH三、什么是免密码登录四、服务器如何实现SSH免密码登录 一、服务器和电脑的区别 服务器和电脑是两种不同类型的计算机系统,它们在设计、功能和用途上存在明显的区别。首先,从硬件配置上看,服务器通…

基于java+springboot+vue实现的大学生就业需求分析系统(文末源码+Lw)233

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

基于java+springboot+vue实现的药店管理系统(文末源码+Lw)285

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,药品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

【Linux】:程序地址空间

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…

016-GeoGebra基础篇-加载项错误_使用此功能所需的服务已关闭,请检查你的隐私设置,

最近有伙伴说遇到一个问题:“加载项错误_使用此功能所需的服务已关闭,请检查你的隐私设置”,该怎么解决? 若大家也遇到同样的问题,建议按照我下边的步骤逐个排查下,基本可以解决“GeoGebra无法完美插入PPT…

利用border绘制三角技巧

绘制三角形的效果如图 <html lang"zh-cn"> <head><meta charset"UTF-8"><title>demo</title><style>* {margin: 0;padding: 0;}.box {/* 盒子宽高改成零就变成三角形 &#xff0c;需要哪个方向的三角形就设置哪个方向…

PD协议诱骗芯片,XSP08Q,XSP16应用笔记

XSP08Q是3C数码或小家电产品的Type-C接口控制芯片&#xff0c;它负责和PD充电器通讯&#xff0c;获取充电器的快充电压档位&#xff0c;如5V4A&#xff0c;9V3A&#xff0c;12V2A&#xff0c;15V3A&#xff0c;20V5A等等。 XSP08Q支持PD协议&#xff0c;BC1.2协议&#xff0c;Q…

Spring MVC 获取请求数据的四种方式,以及获取请求头数据,获取Cookie 的数据,设置Spring MVC 的字符集编码过滤器

1. Spring MVC 获取请求数据的四种方式&#xff0c;以及获取请求头数据&#xff0c;获取Cookie 的数据&#xff0c;设置Spring MVC 的字符集编码过滤器 文章目录 1. Spring MVC 获取请求数据的四种方式&#xff0c;以及获取请求头数据&#xff0c;获取Cookie 的数据&#xff0c…

【IT领域新生必看】Java中的Static关键字详解:小白也能轻松掌握的神奇用法

文章目录 引言什么是Static关键字&#xff1f;Static变量&#xff08;类变量&#xff09;定义和使用示例&#xff1a; 应用场景 Static方法&#xff08;类方法&#xff09;定义和使用示例&#xff1a; 应用场景 Static代码块定义和使用示例&#xff1a; 应用场景 Static嵌套类定…

ESP32 通过蓝牙显示歌词代码示例

通过蓝牙协议播放音乐&#xff0c;有的时候需要显示歌词&#xff0c;这里就是a2dp库获取了歌词 值得注意的是要想正确获取到歌词&#xff0c;必须打开各种播放器的字幕&#xff08;歌词&#xff09;开关 本项目用了三个开源库 a2dp&#xff0c;tft_espi,xfont. a2dp &#x…

Qt 网络编程 udp通信

学习目标&#xff1a;使用udp通信 前置环境 运行环境:qt creator 4.12 学习内容 UDP 协议基础知识 1、UDP(用户数据报协议)是轻量的、不可靠的、面向数据报、无连接的协议&#xff0c;用于可靠性要求不高的场合。两个应用程序之间进行UDP 通信不需先建立持久的 socket 连接…

【IT领域新生必看】解密Java中的静态方法与实例方法:小白也能轻松掌握的全方位指南

文章目录 引言什么是静态方法&#xff1f;定义和使用静态方法示例&#xff1a; 静态方法的特点示例&#xff1a; 什么是实例方法&#xff1f;定义和使用实例方法示例&#xff1a; 实例方法的特点示例&#xff1a; 静态方法与实例方法的区别作用范围示例&#xff1a; 访问权限示…

宁德时代天行发布,商用车超充时代来临

近日&#xff0c;宁德时代正式推出商用动力电池品牌——“宁德时代天行”&#xff0c;同时发布“宁德时代天行轻型商用车&#xff08;L&#xff09;-超充版”和“宁德时代天行轻型商用车&#xff08;L&#xff09;-长续航版”两款产品&#xff0c;可实现4C超充能力和500km的实况…

14-38 剑和诗人12 - RAG+ 思维链 ⇒ 检索增强思维(RAT)

在快速发展的 NLP 和 LLM 领域&#xff0c;研究人员不断探索新技术来增强这些模型的功能。其中一种备受关注的技术是检索增强生成 (RAG) 方法&#xff0c;它将 LLM 的生成能力与从外部来源检索相关信息的能力相结合。然而&#xff0c;最近一项名为检索增强思维 (RAT) 的创新通过…

计算机网络(2

计算机网络续 一. 网络编程 网络编程, 指网络上的主机, 通过不同的进程, 以编程的方式实现网络通信(或网络数据传输). 即便是同一个主机, 只要不同进程, 基于网络来传输数据, 也属于网络编程. 二. 网络编程套接字(socket) socket: 操作系统提供的网络编程的 API 称作 “soc…

免杀笔记 ----> DLL注入

这段时间我们暂时没什么事情干的话我们就继续更新我们的免杀笔记力&#xff01;&#xff01;&#xff01; &#xff1a;今天我们讲DLL注入 目录 1.DLL注入 2.直接加载DLL&#xff1f; 3.远程线程注入 获取Handle 远程申请内存空间 将我们的CS的DLL加载入内存 创建远程线…

C语言 | Leetcode C语言题解之第218题天际线问题

题目&#xff1a; 题解&#xff1a; struct pair {int first, second; };struct Heap {struct pair* heap;int heapSize;bool (*cmp)(struct pair*, struct pair*); };void init(struct Heap* obj, int n, bool (*cmp)(struct pair*, struct pair*)) {obj->heap malloc(si…

Midjourney对图片细微调整和下载保存

点击v2是对第二图片细微调整。 点击u3对第3张图片进行放大。 保存图片: 对点击u3放大的图片&#xff0c;双击 , 右键保存图片