Document
拖动滑块完成拼图
个人中心

预订订单
服务订单
发布专利 发布成果 人才入驻 发布商标 发布需求

在线咨询

联系我们

龙图腾公众号
首页 专利交易 IP管家助手 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索
当前位置 : 首页 > 专利喜报 > 上海伯汉网络科技有限公司郑建良获国家专利权

上海伯汉网络科技有限公司郑建良获国家专利权

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

龙图腾网获悉上海伯汉网络科技有限公司申请的专利一种基于整数运算密码学置换的流密码加解密方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN116112170B

龙图腾网通过国家知识产权局官网在2025-06-24发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202310077754.6,技术领域涉及:H04L9/24;该发明授权一种基于整数运算密码学置换的流密码加解密方法是由郑建良;郑奕设计研发完成,并于2023-02-08向国家知识产权局提交的专利申请。

一种基于整数运算密码学置换的流密码加解密方法在说明书摘要公布了:本发明涉及一种基于整数运算密码学置换的流密码的加解密方法,包括:初始化内部状态;使用原始密钥来更新初始化后的内部状态;使用初始化向量来继续更新内部状态;通过密钥流生成函数生成密钥流,在每生成设定次数的密钥流后,重新刷新内部状态,直至生成的密钥流达到要求的长度。本发明的有益效果是:加密速度快;提供快进功能,可以即时跳到大文件或长数据流的任意位置进行加密或解密;支持设置数据随机访问时间上限,能进行快速或实时随机访问;可以在多种模式下工作,且具有不同的安全强度和加密速度;在进行置换操作时,以伪随机的方式从一个整数中选择一组字节或比特,并使用整数运算将所选的字节或比特整体移动以提高效率。

本发明授权一种基于整数运算密码学置换的流密码加解密方法在权利要求书中公布了:1.一种基于整数运算密码学置换的流密码的加解密方法,其特征在于,包括以下步骤: 将基于整数运算密码学置换的流密码简写为SSC; 加密时:接收明文序列;给定原始密钥key、初始化向量IV、混合操作的循环次数rom、生成密钥流操作的循环次数rog和状态刷新阈值srt,经过SSC整体运算后生成密钥流;将明文序列和生成的密钥流进行异或运算,得到密文序列; 解密时:接收密文序列;给定原始密钥key、初始化向量IV、混合操作的循环次数rom、生成密钥流操作的循环次数rog和状态刷新阈值srt,经过SSC整体运算后生成密钥流;将密文序列和生成的密钥流进行异或运算,得到明文序列; SSC整体运算生成密钥流的具体方式为: 通过重置函数来初始化内部状态;重置函数为resetInternalStateSt,其中St表示内部状态,内部状态St由: 两个32字的数组A和B, 一个32字节的数组M, 三个字w、c1和c2组成; 该函数具体为: 设字x=0x0706050403020100; 从0到31遍历i: St.A[i]=x, x=x+0x0808080808080808; St.A和St.B分别表示内部状态St的数组A和B,St.A[0:3]表示数组A的前四个元素,St.M表示内部状态St的数组M,St.w、St.c1和St.c2表示内部状态St的字w、c1和c2,符号⟸表示内存复制运算,令: St.B=St.A, St.M⟸St.A[0:3] St.w=0, St.c1=0, St.c2=0; 重置内部状态St完成,返回重置后的内部状态St 使用原始密钥key,通过内部状态更新函数来更新初始化后的内部状态;内部状态更新函数为applyKeyOrIVkey,szKey,St,rom,原始密钥key为字节数组,包含szKey个字节,szKey≤64;该函数具体为: 设Kiv为字节数组,包含sz个字节,sz≤64; 设i、j、k、l、p、q、r和u均为字节,a、b、c、d、m、n和pw为字,pkiv为字数组; pkiv,pw=processKeyOrIVKiv,sz; A,B,M,w,c1,c2↔St.A,St.B,St.M,St.w,St.c1,St.c2,符号↔用于给变量设置别名; 对数组A、数组B和数组M进行8次混合操作: 从0到7遍历p: 先对数组M进行混合操作: a,b,c,d⟸M, m,n,u=computeByteMaskw,函数computeByteMaskw用于计算字节掩码, a,b,c,d=mixWordsa,b,c,d,m,n,u, M⟸a,b,c,d, 对数组A和数组B进行混合操作: 从0到7遍历q: pw=pw+pkiv[q], u=q2,符号表示逻辑左移的位运算, i,j,k,l=M[u:u+3], 从0到rom-1遍历r: pw=pw9⊕A[i]+A[j]⊕A[k]+A[l],符号表示向左旋转的位运算, m,n,u=computeByteMaskpw, A[i],A[j],A[k],A[l]=mixWordsA[i],A[j],A[k],A[l],m,n,u, i,j,k,l=M[i],M[j],M[k],M[l], pw=pw+B[i]⊕B[j]+B[k]⊕B[l], m,n,u=computeBitMaskpw,函数computeBitMaskpw用于计算比特掩码, B[i],B[j],B[k],B[l]=mixWordsB[i],B[j],B[k],B[l],m,n,u, i,j,k,l=i,j,k,l⊕M[r0x1f], 重复执行以上步骤,直至从0到rom-1遍历完r、从0到7遍历完q和从0到7遍历完p; 对其他状态变量进行更新: w=w+pw, i,j,k,l⟸pw0x1f1f1f1f, c1,c2=c1+B[i]+B[j],c2+B[k]+B[l], c1,c2=c1|0x05,c2|0xa0, 返回更新后的内部状态St; 由函数mixWordsw1,w2,w3,w4,m,n,u通过置换字节或比特来混合多个字; 使用初始化向量IV,通过内部状态更新函数来继续更新由原始密钥key更新过的内部状态; 通过密钥流生成函数,由给定的原始密钥key、初始化向量IV、混合操作的循环次数rom、生成密钥流操作的循环次数rog和状态刷新阈值srt生成密钥流;在每生成srt次密钥流后,通过刷新函数来刷新内部状态,直至生成的密钥流达到要求的长度;函数processKeyOrIVKiv,sz具体为: 通过级联将字节数组Kiv填充到64个字节: i=sz, 当i≤32时: Kiv=Kiv||Kiv,符号||表示在字节层次将两个数串连的数据级联运算, i=i1; 当i64时: i=63–i, Kiv←Kiv||Kiv[0:i]; 通过级联sz计算字pw: pw=sz||sz||sz||sz||sz||sz||sz||sz, sz表示字节数组Kiv包括的字节个数; 计算字数组pkiv: pkiv⟸kiv; 设常量tm=0x95ac9329ac4bc9b5, x=tm; 从0到7遍历i: x=x+pw, x=x⊕pkiv[i],符号⊕表示异或的位运算; 从0到7遍历j: x=lfsrx, pkiv[j]=pkiv[j]+x, 重复执行以上运算直至j被遍历完; 重复执行以上运算直至i被从0到7遍历完,返回pkiv和pw; 函数processKeyOrIVKiv,sz中调用的寄存器状态转换函数lfsrx具体为: i=x1,符号表示与的位运算, x=x1,符号表示逻辑右移的位运算, 如果i≠0: x=xtm; 返回x的值; 字节掩码的计算函数computeByteMaskw具体为: m=w0x0101010101010101, n=m≪8+1, m=m-n, n=m—,符号¯表示将0和1互换的反转运算, u=w≫61, u=u≪3, 返回m、n和u的值; 比特掩码的计算函数computeBitMaskw具体为: m=w, n=m—, u=w≫58, 返回m、n和u的值; 函数mixWordsw1,w2,w3,w4,m,n,u具体为: w1=w1u,符号表示向右旋转的位运算, w3=w3u,符号表示向左旋转的位运算, wt=w1m|w2n,符号|表示或的位运算, w2=w2m|w3n, w3=w3m|w4n, w4=w4m|w1n, w1=wt, m=m⊕m32, n=m—, w2=w2u, w4=w4u, t1=w2m|w4n, t2=w3m|w1n, t3=w4m|w2n, t4=w1m|w3n, 返回t1、t2、t3和t4的值; 密钥流生成函数generateSt,rom,rog具体为: A,B,C,M,w,c1,c2↔St.A,St.B,St.C,St.M,St.w,St.c1,St.c2; w=reSeedw; 对128位计数器(c1,c2)和字w进行更新: c1=lfsrc1, 如果c1=1,则: c2=lfsrc2, w=w+c1⊕c2; 对内部状态St的数组M进行混合: a,b,c,d⟸M, m,n,u=computeByteMaskw, a,b,c,d=mixWordsa,b,c,d,m,n,u, M⟸a,b,c,d; 对字w进行更新,混合数组A和数组B,并生成密钥流: 从0到7遍历q: u=q2, i,j,k,l=M[u:u+3]; 从0到rom-1遍历r: a,b,c,d=A[i],A[j],A[k],A[l], w=w9⊕a+b⊕c+d, m,n,u=computeByteMaskw, A[i],A[j],A[k],A[l]=mixWordsa,b,c,d,m,n,u, i,j,k,l=M[i],M[j],M[k],M[l], e,f,g,h=B[i],B[j],B[k],B[l], w=w+e⊕f+g⊕h, m,n,u=computeBitMaskw, B[i],B[j],B[k],B[l]=mixWordse,f,g,h,m,n,u, i,j,k,l=i,j,k,l⊕M[r0x1f], 重复执行上述步骤直至从0到rom-1遍历完r; 从0到rog-1遍历r: 从0到7遍历u: v=u2, a,b,c,d=a,b,c,d⊕C[i+v:i+v+3], e,f,g,h=e,f,g,h+C[j+v:j+v+3], 输出a,b,c,d+A[v:v+3]⊕e,f,g,h+B[v:v+3]的结果, 重复执行以上步骤,直至从0到7遍历完u; i,j=i,j⊕M[r0x1f], 重复执行上述步骤,直至从0到rog-1遍历完r,返回内部状态St; 上述调用的函数reSeed具体为: r=readCCC,函数readCCC用于将当前CPU时钟周期计数读入字r,然后对r进行混合处理, r=r+r31, r=r+r15, r=r+r7, 如果系统芯片集成了硬件随机数生成器,则: r=r+readRAND,函数readRAND用于从硬件随机数生成器的生成结果中读取一个随机字并将读取结果加到字r上, 用r修改输入字w并将修改后的w作为返回值: w=w⊕r; 用于刷新内部状态的刷新函数refreshInternalStateSt0,rom,src具体为: ctr=src, 从1到64遍历i: ctr=lfsrctr, 重复执行上式直至从1到64遍历完i; 然后通过以下运算由ctr计算字节数组IV, IV=ctr, 从1到7遍历i: ctr=lfsrctr, IV=IV||ctr, 重复执行上式直至遍历完i; St=St0,St0表示初始化之后的内部状态; St=applyKeyOrIVIV,64,St,rom; 返回St; 若状态刷新阈值srt0,则: St0=St, gctr=0,gctr为字; 当密钥流生成函数生成的密钥流未达到设定长度时: 若srt0,gctr0且gctr%srt=0,符号%表示取余运算,则: src=gctr÷srt, St=refreshInternalStateSt0;rom;src; 不论是否满足gctr0和gctr%srt=0,均执行下式: gctr=gctr+1。

如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人上海伯汉网络科技有限公司,其通讯地址为:201107 上海市闵行区申长路518号906室;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。