[发明专利]一种基于混沌映射的二维码并行生成方法有效
申请号: | 201910013696.4 | 申请日: | 2019-01-08 |
公开(公告)号: | CN109858588B | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 刘嘉辉;朱宝森;宋大华;罗智勇 | 申请(专利权)人: | 哈尔滨理工大学 |
主分类号: | G06K19/06 | 分类号: | G06K19/06;G06N7/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150080 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供了一种基于混沌映射的二维码并行生成方法,客户端与服务器端通过消息传递接口函数(MPI)进行交互。客户端通过MPI函数向服务器发出QR码请求并通过MPI函数将信息源传送给服务器;服务器受理客户端请求并将信息源接收完毕后,先通过处理器核心的两个线程以及Logistic混沌映射和分段线性混沌映射将包含信息源的数据码字进行干扰从而并行生成混沌随机比特序列,然后,通过处理器核心的多个线程对QR码的不同区域并行填充,在填充数据与纠错码区域时,将所述区域分成左区和右区,与剩下的区域一同并行填充,最后,将组装成的QR码存放到动态缓冲区中,通过MPI函数将QR码发送给客户端。 | ||
搜索关键词: | 一种 基于 混沌 映射 二维码 并行 生成 方法 | ||
【主权项】:
1.一种基于混沌映射的二维码并行生成方法,其特征在于,包括:服务器利用两个线程以及Logistic混沌映射和分段线性混沌映射两种不同的混沌映射方式对信息源的完整数据码字并行干扰,从而产生混沌随机比特序列;服务器利用多线程并行的方式对QR码的二维矩阵按区域并行填充,每个线程负责填充一个区域的任务,从而快速生成QR二维码图像;客户端与服务器采用MPI函数进行交互,服务器将生成的QR码二维矩阵保存在QR码的动态缓冲区中来缓解服务器端的供给压力,动态缓冲区采用动态链表的形式来构建从而动态分配QR码给客户端实现快速响应;当并行生成混沌随机比特序列时,服务器利用Logistic混沌映射和分段线性混沌映射作为生成函数,根据客户端的需求量,动态创建线程并驻留在物理计算核心,实现混沌随机比特序列的生成,每一个线程内,控制参数和初始值均不相同,由系统产生随机数作为混沌方程的控制参数和迭代初始值,以保证产生轨道的不同,主要包括:S1、服务器主进程根据所选择的QR二维码的版本和纠错级别生成包含信息源的完整数据码字比特序列Str_0,所述比特序列的长度为length;S2、服务器主进程将比特序列Str_0分成两个比特序列Str_1和Str_2,每个比特序列的长度都是length/2;S3、服务器主进程分配两个线程thread_1和thread_2来并行生成混沌随机比特序列:S3.1、线程thread_1利用Logistic混沌映射对比特序列Str_1进行干扰,进而生成混沌随机比特序列Str_4:首先,通过Logistic混沌映射产生(0,1)之间的随机数:xn+1=xn*u*(1‑xn),u位于区间[0,4]上,xn位于区间[0,1]上,迭代n=length/2次,产生length/2个随机数;然后,将所述随机数二值化处理:当xn位于区间(0,0.5]上时,所得的随机数为0,当xn位于区间(0.5,1)上时,所得随机数为1,进而得到随机比特序列Str_3;最后,将所述的比特序列Str_1与随机比特序列Str_3进行“XOR”运算,得到干扰后的混沌随机比特序列Str_4;S3.2、线程thread_2利用分段线性混沌映射对比特序列Str_2进行干扰,进而生成混沌随机比特序列Str_6:首先,通过分段线性混沌映射产生(0,1)之间的随机数:当xn位于区间[0,p]上时,xn+1=xn/p;当xn位于区间(p,1]上时,xn+1=(1‑xn)/(1‑p),需要迭代n=length/2次,产生length/2个随机数;然后,将所述随机数二值化处理:当xn位于区间(0,0.5]上时,所得的随机数为0,当xn位于区间(0.5,1)上时,所得随机数为1,进而得到随机比特序列Str_5;最后,将所述的比特序列Str_2与随机比特序列Str_5进行“XOR”运算,得到干扰后的混沌随机比特序列Str_6;S4、服务器主进程并行产生混沌随机比特序列结束;当并行填充QR二维码时,服务器利用多线程并行的方式对QR码的二维矩阵进行填充,从而生成QR二维码图像;QR码的填充分为六个区域:探测图形区域、定位图形区域、校正图形区域、格式信息区域、版本信息区域、数据和纠错码字区域,所以,采用多线程并行的方式对不同的区域进行填充;在填充数据和纠错码字区域时,将数据和纠错码字区域分成了左区和右区,所述的两个区域同剩余的五个区域一起并行填充;左区由混沌随机比特序列Str_4填充;右区由混沌随机比特序列Str_6填充,主要包括:S1、服务器主进程根据QR码的版本和纠错级别,构造n阶方阵A,初始值设为0;S2、服务器主进程分配7个线程来并行执行不同的子任务:线程thread_1填充位置探测区域,即将矩阵A的位置探测图形区域按照QR码格式置1:A[0][0…6]=A[2][2…4, 6]= A[3][3, 4, 6]=A[4][4, 6]=1;A[0][n‑7 … n‑1]= A[1][n‑7, n‑1]=A[2][n‑7, n‑5 … n‑3, n‑1]= A[3][n‑7, n‑5 … n‑3, n‑1]= A[4][n‑7, n‑5 … n‑3, n‑1]=A[5][n‑7 … n‑1]=A[6][n‑7 … n‑1]=1;所述操作只填充了矩阵的右上三角,由于位置探测图形区域在矩阵中关于主对角线高度对称,所以,通过矩阵转置将矩阵A的左下三角对应位置也置1;线程thread_2填充定位图形区域,即将矩阵A的定位图形区域按照QR码格式置1:A[6][8, 10, 12 … n‑9]=1;所述操作只填充了矩阵的右上三角,由于定位图形区域在矩阵中关于主对角线高度对称,所以,通过矩阵转置将矩阵A的左下三角对应位置也置1;线程thread_3填充校正图形区域,即根据QR码的版本,将QR码的校正图形区域按照QR码格式置1,不同的版本QR码的校正图形个数和位置不同;校正图形区域在矩阵中关于主对角线高度对称,所以,先填充右上三角区域,然后通过矩阵转置将矩阵A的左下三角对应位置也置1;线程thread_4填充格式信息区域,即按照QR码的信息格式进行填充,而且,还应填充Dark Module部分A[n‑9][8]=1;线程thread_5填充版本信息区域,即按照QR码的版本格式进行填充;线程thread_6填充数据码和纠错码字区域的左区,即将混沌随机比特序列Str_4先进行反转,然后,从左下角开始,利用反转后的比特序列按照顺序依次进行填充并进行掩码,若遇到非数据和纠错码字区域,则跳过所述区域,继续填充;线程thread_7填充数据和纠错码字区域的右区,即从右下角开始,利用混沌随机序列Str_6按照顺序依次进行填充并进行掩码,若遇到非数据和纠错码字区域,则跳过所述区域,继续填充;S3、服务器并行填充QR码二维矩阵结束;当客户端与服务器进行交互时,客户端与服务器采用MPI函数进行交互,由服务器的每一个处理器核心所生成的QR码,保存在QR码的动态缓冲区中;QR码的动态缓冲区用于保存已经组装完成并发送给用户使用的QR码,所述过程包含客户端通过MPI获取服务器端的二维码以及服务器端通过MPI将缓冲区中的二维码发送给客户端,动态链表节点包含3个部分:数据区,互斥区和指针区;数据区用于存储QR码,互斥区用于多线程加锁互斥访问,实现并行化;指针区存储下一个节点的指针地址;主要包括:客户端通过MPI获取服务器端的二维码:S1、客户端利用MPI_send(服务器QR码缓冲区的主进程ID,请求客户端的进程ID)函数向服务器发送获取二维码的请求;S2、客户端利用MPI_send(服务器QR码缓冲区的主进程ID,客户端信息源)函数将信息源发送给服务器;S3、客户端利用MPI_Recv(服务器QR码缓冲区的主进程ID,请求客户端的进程ID,接收QR码的本地缓冲区,通信状态)函数获取服务器发送的二维码,所述操作为阻塞操作,若服务器没有可用的二维码,则客户端会一直等待;S4、客户端获取服务器二维码结束;服务器端通过MPI将缓冲区中的二维码发送给客户端:S1、服务器主进程利用MPI_Recv(服务器QR码缓冲区的主进程ID,请求客户端的进程ID,当前QR码缓冲区的可分配数量,通信状态)函数来接收客户端的请求;S2、服务器主进程利用MPI_Recv(服务器QR码缓冲区的主进程ID,请求客户端的进程ID,信息源,通信状态)函数来接收客户端的信息源;S3、服务器主进程并行生成混沌随机比特序列;S4、服务器主进程并行填充QR码二维矩阵;S5、服务器主进程将二维矩阵保存到QR码动态缓冲区中:生成的QR码保存在动态链表的数据区部分,每生成一个QR码,内存分配一个动态链表节点,并初始化三个部分,把所述节点链接到动态链表中;与QR码访问对应的互斥区实现节点QR码的分配和互斥的访问过程,所述的设计主要是考虑在多核处理器中,多进程访问的时候只允许一个进程获得QR码的访问,一个进程获取QR码,必须对互斥区加锁,才能最终获得QR码,如果所述区域已经加锁,则根据指针区访问下一个节点;在QR码分配之后,从内存中删除所述动态链表节点,以备继续生成QR码使用,动态链表的容量根据访问量和设定的服务器内存的容量来决定,从而能够缓解由于客户端的访问量增多时所带来的延迟和等待问题;S6、服务器主进程利用MPI_send(服务器QR码缓冲区的主进程ID,请求客户端的进程ID,QR码数据)函数将QR二维码发送给客户端;S7、服务器生成QR二维码结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨理工大学,未经哈尔滨理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910013696.4/,转载请声明来源钻瓜专利网。
- 上一篇:一种文件智能定位追踪管理系统
- 下一篇:复合通行卡