大哲的博客分享 http://blog.sciencenet.cn/u/liudazhe 世界的极限在哪里……?

博文

无理数序列编码

已有 2412 次阅读 2021-1-30 17:49 |个人分类:形式科学|系统分类:观点评述

编码这门学科是一些数学原理的体现,进行分类时一般将其列为应用数学,并可应用于通信、信息安全、人工噪声等领域,其主要种类有伪随机编码、纠错编码等。而在编码原理中,使用系统科学中之结合法和移植法往往可设计出某些编码形式,其中之一即是无理数密码。其基本原理是生成无理数数字,然后再将其中各位小数数值单独提取出来,从而生成随机序列。而这种序列应该仍然是种伪随机序列,而非真随机序列。这种无理数编码其实乃是将伪随机原理与无理数原理做了有机的结合。

说起来,目前流密码是世界各国军事和外交等领域所使用的主要密码体制,而且,流密码如伪随机密码的功能,除了加密解密外还包括了人工噪声、数字电视能量扩散、扩谱等,有着广泛的应用空间。但是,伪随机密码有其局限性,除了其安全空间越来越小外,其难以完成长流密码,特别是难以完成超过一千位长度的流密码的缺陷也制约着其发展。而无理数序列随机密码能实现的位数则远远超过几千位。

这种无理数生成的序列能完成伪随机码的某些功能,且长度可以大大的超过普通伪随机序列。其中的主要方法即是把一个无理数的各位数字依次取出来,由于这其中的数字位数理想上是无穷多的,且不循环,所以把数字一位一位取出来,每一位都变成一个十进位数字,就形成了理论上无限长、不循环的十进制数列。例如“e”是一个无理数,2001年X.Gourdon,Plouffe's Inverter,将其算到了小数点后12.5亿位,其前20位是“27182818284590452353”,用这来代替普通伪随机码有时是非常理想的。任何无理数都可以用来实现这种序列。不过无理数形成的这个数列,理论上虽然可以无限长,但实际上我们所能得到的仍是有限长的。此外,用不循环有理数也可以实现类似序列,如有理指数、阶乘数、排列组合数等亦可用来生成之。这是由于某些有理数化成序列后,其生成的数字也不循环但位数较少,因此就形成了有限长且相对较短、不循环的十进制数列。

该序列可用来进行编码生成流密码,所用的母数字如前所述有无理数和不循环有理数两类,当然分数是不能用的。若用有理数生成此密码,此有理数的不循环位数必须要超过或等于待加密的数据流的长度。该密码与许多其他流密码如由原子质量数字生成的流密码、分形生成的流密码相比,有一个主要的区别,即这种密码的密钥流是由数学计算得出的。发送方只要经过计算,即可得出密钥;而接收方即解密方只要知道对方所使用的无理数或不循环有理数是哪一个,所使用的加密数据流从此无理数或不循环有理数的哪一位开始、哪一位结束、隔几位取一个数字、从前向后还是从后向前即顺序如何,再经过计算即可得出密钥。而这些都可以通过按照事先设定好的加密通信协议规定,传输某些数据即可得知。

若与其它伪随机序列相比,此类序列长度可大大超越之,且种类很多。只要有足够的计算能力和存储空间,便可得到极大长度的数据流密码。不过,伪随机码有平均值,而此序列则往往没有,除非使用曼彻斯特码进行处理。而且,伪随机序列是二进制码,此序列是十进制码,若要将其变成二进制,用普通二-十进制转换较复杂,若要简化处理除可用BCD码外,还有一种方法可用,即采取每位舍入法。方法以四舍五入为例,当某一位十进制数字小于“5”时,变为二进制数字“0”;否则变为二进制数字“1”。不同的舍入法转化为不同的序列。使用这种密码接发双方都不需要数据库和密码表。其特点还有,很难覆盖其长度的全部码字,比如一百位的序列,很难找到全部数学上存在的码字。比如31415926容易找到,但31416921却难以找到。并且这类序列很难做到全部正交。最后此密码属于对称密钥。

但是,一般的计算机只有32位或64位,单片机、计算器位数更少,要计算位数较长的数字,要编特殊的程序进行计算,十分复杂。若计算出的位数较少,待加密数据列较长时则往往不够用。这个问题可以用类似伪随机密码中的混合算法来解决,将无理数序列进行组合处理,以避免计算极长无理序列或不循环有理序列所需要的巨大运算量。可以只计算出许多数字中每一个数的前面几位,再把它们连接起来,也即合许多短密钥为一个长密钥。这样就可以不必计算一个数字的几万几亿位也可生成那么多位随机数字了。这个方法有个前提条件,所采用的不同数字必须有内在的联系,有一个约定的规则。比如种子无理数或为递加与递减,或为由在结果序列中取值做为种子再生成无理数序列。

具体可为,采用cos1,cos2,cos3...cos10000(种子数字单位可为弧度或角度、每个计算结果数值取前十位小数),这里1,2,3...10000按1递加。再或采用cos2,cos4,cos6...cos20000(按2递加),或cos1.1,cos2.1,cos3.1...cos10000.1(种子不是整数数字),还或cos3,cos1,cos4,cos1,cos5,cos9,cos2,cos6...(按无理数各位数值变化)。这些可以通过设计伪随机数协议来规定,从而决定实际状况。

所以,若使用一只卡西欧计算器计算无理数,尽管每次只能计算十位数字,但如果计算一万个数字,即使每次计算后取9位,仍可以得到9万个数字。例如cos1=540302305、cos2=416146836、cos3=989992496、…、cos10000=952155366(种子数单位是弧度)。这种方法不同于普通的由高斯白噪声产生的伪随机序列,得到的数列没有固定的平均值。但仍可以用于某些随机序列适用的领域。这种组合无理数编码,从系统角度来分析主要是将循环递加等算术运算与无理数计算进行了结合。

还可用无理序列和不循环有理序列生成矩阵列,如“e”=2.7182818284590452353...,可以生成矩阵列(2,7;1,8)(2,8;1,8)(2,8;4,5)(9,0;4,5)(2,3;5,3)。其单个矩阵加密解密方法与希尔矩阵密钥相同,只是每加密两个数字,换一个矩阵。有一个问题,就是密钥矩阵必须可逆,有两种方案可以解决这个问题。一种方案是在发送端进行检查,只使用不存在出现矩阵不可逆情况的母数字;另一种方案是两端检查,出现不可逆的矩阵即丢弃不用。判断矩阵是否可逆的方法也有两种,一种简单的相乘法,如果矩阵行列式为零,即为不可逆;另一种方法是比较法,比较(A,B;C,D)中是否A=B,C=D;或A=C;B=D;或A=B=0;或A=C=0;或B=D=0;或C=D=0。



https://m.sciencenet.cn/blog-3451349-1269763.html

上一篇:饮食、环保与健康
下一篇:代数迭代序列编码

3 杨正瓴 王安良 李毅伟

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的精选博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-18 18:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部