高等教育学历证书随机编号的算法探讨

2022-09-12

从2001年起, 我国开始对高等教育学历证书实行电子注册制度, 对所有毕业生进行统一编号, 并可通过中国高等教育学生信息网查询。在学生毕业前2至3个月, 学校会把学生的名单送交省教育厅, 教育厅比对毕业学生与入学名单准确无误后, 再由学校进行编号。

由于学历电子注册工作的时间安排, 高校编制证书编号及电子注册工作往往在颁发毕业证之前, 大多数高校都会为欠缴学费的学生及不合格课程较少的学生编制证书编号并完成电子注册, 少数高校给所有毕业生编制证书编号。这就给不法分子以可趁之机, 大量叫卖毕业证证书编号的网站和手机短信层出不穷, 给高校学籍管理工作带来了极大的困扰。

在学生没拿到毕业证前, 毕业证编号只有部、省级教育行政部门和学校学籍管理部门知道, 属于机密。毕业证编号的泄露可能的途径有三:一是学校疏于管理, 储存毕业证编号的电脑遭到黑客攻击而泄露信息;二是人为的信息泄露;三是不法分子高等教育学生信息网和省级证书验证网上采用穷举法获得毕业证编号。一、二两种情况只能通过加强证书管理及网络安全措施来解决。

1 随机编号的必要性

由于高等教育学生信息网为应届毕业生提供免费查询, 这就给不法分子以可乘之机。如果高校的毕业证编号有一定的规律, 如顺序编号、小范围随机编号, 不法分子通过班级内已领取毕业证的学生的证书编号, 可以较为准确的猜测其他学生的毕业证编号, 在再网上测试验证。因此, 大范围随机编号可以有效的防止不法分子在网上“试”出毕业证编号, 同时使穷举法变得几乎不可能。因此, 编写短小易懂、运行速度快的随机编号程序是非常必要的。

2 随机编号的算法实现

虽然Visual Foxpro在数据安全性方面一直饱受诟病, 但其易用性、方便的数据格式转换、通俗的编程语句、对自由表操作的灵活性等方面仍具有较大的优势, 用vfp作为教务管理系统和教育部学籍学历管理平台之间的数据转换工具是一个很好的选择。下面就以vfp为平台, 探讨随机编号的算法实现。

2.1 直接用rand () 函数实现随机编号 (方法1)

Visual Foxpro系统函数中有rand () 函数, 可以直接产生随机编号, 鉴于目前各高校的办学规模, 肯定会产生重号。通过s q l语句统计重号的数量, 如果重号比较多可以重新编号, 如果重号比较少, 则手动调整重号。具体代码如下:

Repl all zsbh with Alltrim (str (int (rand () *1000000) +1000000) ) *产生七位随即号

以下代码查看重号数量, 如果重号数量比较少, 则可以手工修改, 直到查询结果为空。

2.2 利用数组实现随机编号 (方法2)

理论上Visual Foxpro的每个数组最多可包含6 5000个元素, 先对数组元素顺序赋值, 再随机产生数组下标号, 如果数组元素值不为0则写入字段, 然后该元素赋0。具体代码如下:

由于Visual Foxpro数组的限制, 以上程序只能在1到65000之间随机编号, 这个号段虽然已经远大于预计毕业生人数, 但是与zsbh中可以利用的1到999999的编号区间相比, 只站可用号段的6.5%, 随机性并不是很强。

2.3 全号段随机编号 (方法3)

为了提高随机性, 对全号段进行随即编号, 但程序的易读性比较差。

if fsize ("zsbh") =0&&判断字段zsbh是否存在

程序结束后zsbh字段是7为随机值, 截取2-7位, 再与其它规定的代码连接就成为规范的证书编号。

3 几种算法的对比

方法1最简单, 执行速度最快, 在w i ndows xp+Visual Foxpro 6.0系统下 (下同) 几乎是瞬间执行完毕, 但是重号情况无法控制, 对7 0 0 0条记录的表进行多次随机编号, 重号记录分别为64、34、76、42, 随着重号记录数的不同, 后期手工修改工作量也不一样。

方法2的算法优异, 程序简单易读, 执行速度较快, 对7 0 0 0条记录的表进行随机编号, 耗时8秒左右, 但是只能利用可编号段的6.5%, 随机性不够强。

方法2的算法一般, 程序可读性较差执行速度较慢, 对7 0 0 0条记录的表进行随机编号耗时近5分钟, 其优点是随机性强, 不需要人工干预。

摘要:为了保证高等教育学历证书编号的保密性, 对预计毕业生进行大范围随机编号是非常必要的, 文中对各种随机编号的算法探讨进行了探讨, 并对比分析代码运行的效果。

关键词:高等教育,学历证书,随机编号,算法

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:关于国有企业如何进行全面预算管理问题的思考下一篇:制造企业6S现场管理的学习与探究