Computer Science and Application
Vol. 13  No. 04 ( 2023 ), Article ID: 64295 , 10 pages
10.12677/CSA.2023.134078

基于箝位矩阵的公钥密码

陆成刚

浙江工业大学理学院,浙江 杭州

收稿日期:2023年3月18日;录用日期:2023年4月17日;发布日期:2023年4月23日

摘要

箝位矩阵是一类以一定范围内的非负整数作为构成元素的矩阵,且在运算过程中这些元素始终被钳制在该范围内。构造两组在箝位运算下互逆的方阵,由此生成一对密钥。在一阶矩阵情形下,箝位设计的密码系统只具多项式复杂度的破解强度,当二阶以上时,原先的破解成因不复存在,从而陡然升级为NP复杂度的强度,且随着矩阵阶数的增大而呈指数增强。箝位矩阵的公钥密码具有独特的批处理加解密形式,虽然涉及矩阵乘法,但对每个明文处理单位而言,平均计算占有并不高。和传统的RSA、Elgamal和椭圆密码等基于大素数(或基于由大素数参与构造的有限域)不同,箝位矩阵的公钥密码的密钥获取极其容易,不需要耗费资源作素数检验,而且箝位矩阵的公钥密码系统具有自然的随机性效应,不像RSA需要专门设计的附加随机填充的模式,或者不像Elgamal引入临时性的随机密钥那样的协议交互的设计。由此可以证明,箝位矩阵密码系统具有像离散对数困难性那样的归约到枚举未定矩阵形式的NP复杂度强度。

关键词

箝位矩阵,公钥密码,RSA算法,Elgamal算法,辗转相除法

Public Key Cryptography Based on Clamping Matrix

Chenggang Lu

College of Science, Zhejiang University of Technology, Hangzhou Zhejiang

Received: Mar. 18th, 2023; accepted: Apr. 17th, 2023; published: Apr. 23rd, 2023

ABSTRACT

Clamping matrix was a kind of matrix whose elements were non-negative integers within a certain range, and these elements were always clamped within this range during the operation. Be constructed to two sets of square matrices that were mutually inverse under the clamp operation, thereby generating a pair of keys. In the case of a first-order matrix, the clamp-designed cryptosystem only had the cracking strength of polynomial complexity. When it was higher than the second order, the original cracking causes no longer exists, so it was suddenly upgraded to the strength of NP-complexity, and with the matrix, it increased exponentially as the order increases. The public key cryptography of the clamping matrix had a unique form of batch encryption and decryption. Although matrix multiplication was involved, the average computational occupancy for each plaintext processing unit was not high. Different from traditional RSA, Elgamal and elliptic ciphers based on large prime numbers (or based on finite fields constructed by large prime numbers), the key acquisition of public key cryptography with a clamping matrix was extremely easy, and it did not need to spend resources for prime number checking. Moreover, the public key cryptosystem of the clamping matrix had a natural randomness effect, unlike RSA which required a specially designed pattern of additional random padding, or the design of protocol interaction like Elgamal introduced a temporary random key. Clamping-matrix cryptosystems could be shown to have NP-complexity strengths like discrete log difficulty reduction to enumerated indeterminate matrix form.

Keywords:Clamp Matrix, Public Key Cryptography, RSA Algorithm, Elgamal Algorithm, Euclid’s Tossing and Dividing

Copyright © 2023 by author(s) and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).

http://creativecommons.org/licenses/by/4.0/

1. 问题背景

经典的非对称密钥系统RSA (Rivest-Shamir-Adleman)、Elgamal和椭圆密码 [1] [2] [3] [4] [5] 是基于大素数来构造的:例如RSA是通过两个大素数相乘获得一个半素数,通过基于半素数的欧拉数的同余运算构造一对互逆指数实现加解密运算;Elgamal是使用一个大素数构造的有限域上的循环群的离散对数计算困难性实现保密机制;椭圆密码则是利用有限域上的椭圆曲线的点加运算实现加解密,本质上还是一类离散对数计算困难性问题,相对于一般有限域循环群的离散对数问题,椭圆密钥构造需要的素数可以更小一些。

以上算法的构造无一例外都需要大素数的支持,而大素数是稀缺资源,寻找合适的大素数是和素数检验有密切的关系的。Miller-Rabin素数检验是概率素数检验,一种确定给定数是否可能为素数的算法 [6] [7] [8] 。可见,这些算法的应用在安全性较高的前提下,其本身的密钥生成的不易程度也是一个制约因素。此外,这些密码系统都是基于数域可交换运算来实现的,对未来量子计算而言,具有一定的无法抵御攻击的风险。专利 [9] 是一类基于箝位矩阵结构而设计的非对称密码,专利阐述了该方法的步骤并给出应用的示例。本文分析该专利的公钥密码系统的原理和安全性,以及数值实验比较,它突出的特点是密钥生成极其简单,另外,由于矩阵乘法的不可交换性,对于抵御未来量子计算攻击也是具一定的趋好因素。

后文首先介绍该密钥的设计原理和加解密模式,然后再证明密钥的安全性,最后是加解密数据实验。

2. 密钥设计原理

引入记号 z N z N 1 z 2 z 1 表示一N位的整数,其中 z i 0 , 1 , 2 , , 9 ( 1 i N )的任意数字,即

z N z N 1 z 2 z 1 = i = 1 N 1 z i 10 i 1 (1)

对任意 1 2 k + 1 N 显然有拆分 z N z N 1 z 2 z 1 = z N z N 1 z 2 k + 2 10 2 k + 1 + z 2 k + 1 z 2 k z 2 z 1 (对 2 k + 1 = N ,有 z N z N 1 z 2 k + 2 = 0 )。再定义取该整数末2k + 1位数的箝位运算,即 z N z N 1 z 2 z 1 _ = z 2 k + 1 z 2 k z 2 z 1 (k为任意大于等于零的整数),参数2k + 1为箝位指数。下面先从整数开始探讨箝位运算的一些性质,最后引申到矩阵也具备这些箝位特点。

引理1. 设正整数a,b,k,则高斯取整函数满足性质 [ a b 10 k ] [ a 10 k ] b

证明:设 a = i = 0 N a i 10 i , b = i = 0 M b i 10 i 其中N、M为非负整数,于是 a b = i + j = 0 i + j = N + M ( a i b j ) 10 i + j [ a b 10 k ] = i + j = k i + j = N + M ( a i b j ) 10 i + j k 。而 [ a 10 k ] b = i = k N a i 10 i k i = 0 M b i 10 i = i k , i + j = k i + j = N + M ( a i b j ) 10 i + j k 。对于每个固定的幂次 i + j k ,均有 i + j k a i b j i k a i b j (因为 i k i + j k 故右边的组合选项数少于左边),例如对于 i + j k = 2 ,左边为 ( a 0 b k + 2 + + a k b 2 + a k + 1 b 1 + a k + 2 b 0 ) ,右边为 ( a k b 2 + a k + 1 b 1 + a k + 2 b 0 ) 。故 [ a b 10 k ] [ a 10 k ] b

引理2. 低位保持原理。设整数u、v、a的乘积为N位整数,u、a乘积为M位整数,v、a乘积为T位整数,即

u v a = z N z N 1 z 2 z 1 (2)

u a = x M x M 1 x 2 x 1 (3)

v a = y T y T 1 y 2 y 1 (4)

并且 N 2 k + 1 M 2 k + 1 以及 M 2 k + 1 ,k为某确定的正整数。则有

u v a _ = u a _ v _ = v a _ u _ (5)

证明:首先由式(2)得

u v a _ = z 2 k + 1 z 2 k z 2 z 1 (6)

由式(3)得到

u a _ = x 2 k + 1 x 2 k x 2 x 1 (7)

于是

u a _ v = x 2 k + 1 x 2 k x 2 x 1 v = ( x M x M x 2 k + 2 x 2 k + 1 x 2 k x 2 x 1 x M x M x 2 k + 2 10 2 k + 1 ) v = x M x M x 2 k + 2 x 2 k + 1 x 2 k x 2 x 1 v x M x M x 2 k + 2 10 2 k + 1 v = u a v x M x M x 2 k + 2 10 2 k + 1 v = z N z N 1 z 2 z 1 x M x M x 2 k + 2 10 2 k + 1 v = z N z N 1 z 2 k + 3 z 2 k + 2 10 2 k + 1 + z 2 k + 1 z 2 k z 2 z 1 x M x M x 2 k + 2 10 2 k + 1 v = ( z N z N 1 z 2 k + 3 z 2 k + 2 x M x M x 2 k + 2 v ) 10 2 k + 1 + z 2 k + 1 z 2 k z 2 z 1

又根据引理1得

z N z N 1 z 2 k + 3 z 2 k + 2 = [ u a v 10 2 k + 1 ] [ u a 10 2 k + 1 ] v = x M x M x 2 k + 2 v

即式中 z N z N 1 z 2 k + 3 z 2 k + 2 x M x M x 2 k + 2 v 为非负整数,

所以

u a _ v _ = z 2 k + 1 z 2 k z 2 z 1 (8)

类似地

v a _ u = y 2 k + 1 y 2 k y 1 u = y T y T 1 y 2 k + 2 y 2 k + 1 y 2 k y 1 u y T y T 1 y 2 k + 2 10 2 k + 1 u = v a u y T y T 1 y 2 k + 2 10 2 k + 1 u = z N z N 1 z 2 z 1 y T y T 1 y 2 k + 2 10 2 k + 1 u = z N z N 1 z 2 k + 3 z 2 k + 2 10 2 k + 1 + z 2 k + 1 z 2 k z 2 z 1 y T y T 1 y 2 k + 2 10 2 k + 1 u = ( z N z N 1 z 2 k + 3 z 2 k + 2 y T y T 1 y 2 k + 2 u ) 10 2 k + 1 + z 2 k + 1 z 2 k z 2 z 1

根据引理1得到

v a _ u _ = z 2 k + 1 z 2 k z 2 z 1 (9)

由式(6)、(8)、(9)得式(5)的结论。证毕。

该引理说明任意三个整数乘积的末连续几位的数字可以由仅仅取中间结果的末连续几位来乘积得到,而根据整数乘法满足交换律,中间结果有两种可能形式,均符合这种性质。我们称这种性质为低位保持原理,很明显多于三个数的乘积也满足这种原理。

引入对n阶非负整数方阵的箝位运算, A _ 表示A的每个元素钳制到箝位指数控制的范围内,而 A B _ 表示矩阵A和B先做矩阵乘法再做箝位运算,类似地,可以证明:

A B _ = A _ B _ A B _ C _ _ = A B C _ = A _ B C _ _ (10)

定理2. 加密解密原理。由从0到 10 2 k + 1 1 整数的随机数构成的n阶方阵A,设E为单位矩阵,根据

[ A 2 k + 1 10 2 k + 1 + E ] = [ ( 10 A ) 2 k + 1 + E ] = ( 10 A + E ) [ ( 10 A ) 2 k ( 10 A ) 2 k 1 + + ( 10 A ) 2 ( 10 A ) + E ] = ( 10 A + E ) { ( 10 A E ) i = 1 k ( 10 A ) 2 i 1 + E } (11)

在箝位运算机制下有

( 10 A + E ) _ { ( 10 A E ) i = 1 k ( 10 A ) 2 i 1 + E } _ = { ( 10 A E ) i = 1 k ( 10 A ) 2 i 1 + E } _ ( 10 A + E ) _ = E (12)

10 A + E ( 10 A E ) i = 1 k ( 10 A ) 2 i 1 + E 在箝位运算机制下互逆。

证明:由式(11)和式(10)箝位运算的机制,结论是显然的。证毕。

定理3. 密钥生成。由从0到 10 2 k + 1 1 整数的随机数构成的n阶方阵A和B,令

U = ( 10 A + E ) { ( 10 B E ) i = 1 k ( 10 B ) 2 i 1 + E } (13)

V = ( 10 B + E ) { ( 10 A E ) i = 1 k ( 10 A ) 2 i 1 + Ε } (14)

U V _ = V U _ = E ,即U和V在箝位运算下是一对互逆矩阵。

证明:由矩阵乘法和箝位运算的结合律,结论是显然的。

3. 加解密方法

由定理2和3,得到

( V U ) X _ = V ( U X ) _ = X (15)

利用U、V的互逆性,可以实现加解密。密钥U、V的角色是对称的,如果U作为公钥,那么V作为私钥,或者反之;用作加密与用作数字签名,在计算上没有差异,只是由收、发方加密处理的不同。而且明文(在签名时就是明文的摘要)、密钥和明文均是n阶箝位矩阵,所有元素可以取到0到 10 2 k + 1 1 的整数,密钥是随机整数。

又由于密钥

U = ( 10 A + E ) { ( 10 B E ) i = 1 k ( 10 B ) 2 i 1 + E } = 10 A { ( 10 B E ) i = 1 k ( 10 B ) 2 i 1 + E } + 10 { ( 10 B E ) i = 1 k ( 10 2 i 2 B 2 i 1 ) } + E (16)

前两项都含因子10,导致该矩阵除对角线外所有元素末位为0,于是直接用明文矩阵X计算,得到

U X = 10 A { ( 10 B E ) i = 1 k ( 10 B ) 2 i 2 + E } X + 10 { ( 10 B E ) i = 1 k ( 10 2 i 2 B 2 i 1 ) } X + X (17)

则密文矩阵 U X _ 的所有元素的末尾是X的元素的末位数字。为此,X在加密时先作一种预处理,每个元素的数字右移一位,将个位数设置一个随机数,然后加密,即与密钥作箝位机制下的矩阵乘法。这样处理一举两得,一方面可以避免末位泄露,另一方面自然地引入了随机性,即对相同的明文使用同一密钥生成的密文不同。

由此每个明文单位可对应取到的整数在0到 10 2 k 1 之间。每次进行加密的文本单位的规模是矩阵的阶数平方 n 2 ,这是一种批处理模式,它和RSA、Elgamal等算法的点处理模式明显不同。由于矩阵乘法的复杂度是 O ( n 3 ) ,平均到每个文本单位的计算复杂度是 O ( n ) ,即依密钥尺度呈线性增长,这样的加解密计算的消耗与RSA之类算法相仿。图1给出箝位矩阵加密和签名的算法流程。

Figure 1. Application of public key cryptography with clamping matrix

图1. 箝位矩阵的公钥密码的运用

4. 密钥安全性分析

破解箝位矩阵的公钥密码,并不意味着直接去计算箝位运算限制下密钥矩阵的逆,因为那意味着关于整数矩阵求解整数形式的箝位逆。更一般的等价形式是求如下的方程

F U = G 10 2 k + 1 + E (18)

式(18)中,U是已发布的受攻击的密钥,F就是待定的在箝位运算限制下的U的整数逆。方程右边是一个未定的适配矩阵G,而之所以写成 G 10 2 k + 1 + E ,是由于右端在箝位限制下变成单位阵的需要。显然,式(18)已经包含了直接求U的箝位逆的情形。事实上,式(18)是一个典型的整系数不定方程如何求取整数解的问题。

首先考虑一个特例,当箝位矩阵的阶数n = 1时,由于方程(18)中U是末位1的整数,与 10 2 k + 1 互素,因而可以使用欧几里德辗转相除法,得到确定的整数F、G满足

F U = G 10 2 k + 1 + 1 (19)

辗转相除法的计算复杂度是在 O ( log 10 2 k + 1 ) = O ( k ) 级别。但当箝位矩阵的阶数大于1时,对于整数矩阵没有带余除法,且矩阵乘法具不可交换性,因此也没有辗转相除法。式(18)只有从一般的解线性方程组的角度去分析。

一般整系数线性不定方程求取整数解在理论上是可解的 [10] ,通常把一部分变量视作已知量,其余变量写成这些视作已知的变量的表达式。但显然,这样的形式解在这里没有用处,式(18)中必须确定F的具体数字(因而也可确定G的数字)才能破解

F U X _ _ = F U _ X _ = X (20)

由于式(18)是不定方程,要确定具体的数字解,必须令视作已知的变量取作具体的数字,由于箝位运算导致变量F、G的元素取值在箝位指数控制的范围内(0到 10 2 k 1 之间),所以尝试取值的可能数目是 10 2 k 。又由于矩阵的元素数目为 n 2 ,所以总的取值尝试次数为 10 2 k n 2 。当k = 3、n = 10时,这个数目就是10600。显然,箝位矩阵公钥的破解难度是依参数k、n呈指数增加的。这里把破解算法归约到枚举该未定矩阵G的所有元素,得出破解强度是NP的结论,就像Elgamal之类的算法是基于离散对数计算归结为枚举所有对数值的困难性一样。

顺便指出,在式(18)中如果直接使用U的常规逆,则F未必为整数矩阵,如此 F U 的元素的取值必受高于2k + 1位数数字的影响。于是 F U 虽然为单位阵,但显然 F U X _ _ F U _ X _ = X 即不满足结合律式(10)。

综上所述,箝位矩阵公钥系统满足计算复杂性意义下的强度和安全性。

5. 与RSA、Elgamal密码的比较

首先,一个重要的不同是密钥生成的难易程度的差异,RSA需要寻找两个大素数,Elgamal的有限域依赖大素数来构造;其次,RSA的一对公私钥是关于欧拉数模余运算互逆的,当已知一个密钥,求另外一个密钥需要使用辗转相除法来计算。而本文算法在密钥生成时,不需要依赖大素数,只要生成一个指定位长的随机数方阵作为种子,进行若干次矩阵乘法即可获得。最后,RSA、Elgamal对明文加密处理是逐点式的,而本文算法是批处理模式。

RSA密钥长度与选定的大素数数字长短有关,且为增加破解强度而延长密钥长度的代价是搜寻更大的素数;本文算法的密钥长度增长有两个维度,其中以增加矩阵的阶数的方式扩充密钥,增加破解强度,是较容易做到的。在加密解密运算方面,RSA、Elgamal都是运算可交换的,而本文算法基于矩阵乘法,运算有左乘右乘之分。在量子计算里,由于量子的物理性态决定了量子适合对称作用的并发模拟,对非交换的矩阵乘法的并行性模拟反而是其弱项,因此基于矩阵乘法的密码有适应后量子密码时代的特征 [11] [12] [13] [14] [15] 。表1总结了与RSA、Elgamal比较的分析。

Table 1. Comparison with RSA and Elgamal

表1. 与RSA、Elgamal的比较

6. 加解密实验

算法的数据试验采用k = 3、n = 10的参数,即运用箝位指数为7的10阶矩阵作实验,则定理3中的A、B作为种子是10阶7位(十进制位)长随机数构成的矩阵。由于MSVC系统库里的rand()算法的随机数上界的限制,实际使用的是6位长随机数的种子,而生成的其中一个密钥如图2所示。

Figure 2. Key example

图2. 密钥示例

对如图3所示的明文进行加密,加密结果如图4所示。

Figure 3. Plaintext example

图3. 明文示例

Figure 4. Encrypted result

图4. 加密结果

对该密文解密后的结果如图5所示。

Figure 5. Decryption result

图5. 解密结果

为验证末位随机化预处理的效果,考虑上面明文的另一预处理版本(即仅末位不同),见图6

Figure 6. Another version of the plaintext example with randomization at the end

图6. 末尾随机化的明文示例的另一版本

使用上面相同的密钥加密后的密文,如图7所示。

Figure 7. Ciphertext encrypted using the key in Figure 2

图7. 使用图2密钥加密后的密文

可见上面两段仅末位不同的明文在相同密钥处理后的密文差异极大,这个反映了箝位密码具有一定的随机性效应。将上面这段密文解密后的明文如下,见图8

Figure 8. Decryption after encryption of another version of the plaintext example

图8. 明文示例另一版本加密后的解密

使用RSA与本文算法作运算时效对比实验。RSA算法运行不包含大素数选取、密钥生成,只从明文加密再解密恢复的一轮运算时间着手,并且代码经过优化 [16] ;而本文算法包含生成两个随机种子矩阵,再进行密钥生成,然后对明文加密、再解密的一轮运算的时间总和,但代码未经过优化。由于双方对明文处理的长度都不一样,所以本文算法处理时间除以n2,这样可以显示在某个相同基准上衡量两个算法的运算占时(图9的纵轴)。从图9可以看出,对选取的5个算例(图9的横轴),本文算法比RSA运算占时少了三十多倍。实验结果表明,本文算法在单位明文长度的计算效率上比RSA算法高三十倍。

Figure 9. Comparison of running time between RSA and the algorithm in this paper

图9. RSA和本文算法的运行时效比较

7. 结语

传统的基于有限域或素数的密码系统都有依赖大素数的密钥生成的不易性,本文提出一个密钥生成极其容易的公钥密码系统,且具有因使用矩阵乘法而不易被未来的量子计算产生攻陷危机的优势。由于钳位矩阵与二维码维数匹配的自然特性,下一步拟探索将钳位公钥用于二维码的数字签名的研究。

文章引用

陆成刚. 基于箝位矩阵的公钥密码
Public Key Cryptography Based on Clamping Matrix[J]. 计算机科学与应用, 2023, 13(04): 789-798. https://doi.org/10.12677/CSA.2023.134078

参考文献

  1. 1. Rivest, R., Shamir, A. and Adleman, L. (1978) A Method for Obtaining Digital Signatures and Public-Key Cryptosys-tems. Communications of the ACM, 21, 120-126. https://doi.org/10.1145/359340.359342

  2. 2. Ibrahima, A., Chefranov, A. and Hamamreh, R. (2021) Ciphertext-Only Attack on RSA Using Lattice Basis Reduction. The Interna-tional Arab Journal of Information Technology, 18, 237-247. https://doi.org/10.34028/iajit/18/2/13

  3. 3. Kumar, M. and Susan, S. (2021) Exploration and Implementation of RSA-KEM Algorithm. Proceedings of ICSCS 2021: Soft Com-puting for Security Applications, Springer, Cham, 161-179. https://doi.org/10.1007/978-981-16-5301-8_12

  4. 4. Reegan, A.S. and Kabila, V. (2021) Highly Secured Cluster Based WSN Using Novel FCM and Enhanced ECC-ElGamal Encryption in IoT. Wireless Personal Communications, 118, 1313-1329. https://doi.org/10.1007/s11277-021-08076-0

  5. 5. Khoirom, M.S., Laiphrakpam, D.S. and Tu-ithung, T. (2021) Audio Encryption Using Ameliorated ElGamal Public Key Encryption over Finite Field. Wireless Per-sonal Communications, 117, 809-823. https://doi.org/10.1007/s11277-020-07897-9

  6. 6. Yarmish, G., Yarmish, J. and Yarmish, J. (2021) Finding Large Primes. https://arxiv.org/ftp/arxiv/papers/1709/1709.09963.pdf

  7. 7. Miller, G.L. (1976) Riemann’s Hypothesis and Tests for Primality. Journal of Computer and System Sciences, 13, 300-317. https://doi.org/10.1016/S0022-0000(76)80043-8

  8. 8. Rabin, M.O. (1980) Probabilistic Algorithm for Testing Pri-mality. Journal of Number Theory, 12, 128-138. https://doi.org/10.1016/0022-314X(80)90084-0

  9. 9. 陆成刚. 一种基于箝位矩阵的整数可逆性的公私钥密码系统[P]. 中国, CN202210465885. 2022-07-29.

  10. 10. Apostol, T.M. (1967) Calculus, 2nd Ed., Vol. 1: One-Variable Calculus, with an Introduction to Linear Algebra. Blaisdell, Waltham, 143 p.

  11. 11. Moldovyan, A.A, Moldovyan, D.N. and Moldovyan, N.A. (2022) A Novel Method for Developing Post-Quantum Digital Signature Algorithms on Non-Commutative Associative Algebras. Information Management Systems, 1, 44-53. https://doi.org/10.31799/1684-8853-2022-1-44-53

  12. 12. Moldovyan, A.A. and Moldovyan, N.A. (2022) Split Logarithm Problem and a Candidate for a Post-Quantum Signature Scheme. Computer Science Journal of Moldova, 30, 121-142. https://doi.org/10.56415/csjm.v30.14

  13. 13. Moldovyan, A. and Moldovyan, D. (2022) A New Method for Developing Signature Algorithms on Finite Non-Commutative Algebras. Buletinul Academiei de Ştiinţe a Moldovei. Ma-tematica, 98, 56-65. https://doi.org/10.56415/basm.y2022.i1.p56

  14. 14. Nguyen, M.H., Hoang, C.N., Moldovyan, A.A., et al. (2022) A Novel Version of the Hidden Logarithm Problem for Post-Quantum Signature Algorithms. Theoretical Computer Sci-ence, 921, 36-49. https://doi.org/10.1016/j.tcs.2022.03.040

  15. 15. Minh, N.H. and Moldovyan, D.N. (2021) Post-Quantum Blind Sig-nature Protocol on Non-Commutative Algebras. Journal of Computer Science and Cybernetics, 37, 495-509. https://doi.org/10.15625/1813-9663/37/4/16023

  16. 16. Kokke, Dudedsy Brian Evans, Etc. Tiny-Bignum-C. https://github.com/kokke/tiny-bignum-c

期刊菜单