CN108337087B - 基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 - Google Patents
基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 Download PDFInfo
- Publication number
- CN108337087B CN108337087B CN201810119265.1A CN201810119265A CN108337087B CN 108337087 B CN108337087 B CN 108337087B CN 201810119265 A CN201810119265 A CN 201810119265A CN 108337087 B CN108337087 B CN 108337087B
- Authority
- CN
- China
- Prior art keywords
- mod
- vector
- data
- encryption
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于密码向量和斐波纳契矩阵的Diffie‑Hellman加密方法,简称FBDH,FBDH是一个公开密钥算法,即:双方公开约定两个参数,一个整数g,一个素数N,首先,各自产生一个私有密钥向量x(x1,x2)和y(y1,y2),并计算出各自的公开密钥向量X和Y,双方对X和Y进行交换。其次,公开密钥向量交换后,双方计算出用于加密和解密的密钥向量K1和K2,结果K1和K2是相同的。发送方通过密钥K1加密数据,并通过Fibonacci矩阵变换,最终获得加密数据向量;接收方接收加密数据向量,通过Fibonacci逆矩阵变换,再经过K2解密报文,最终获得原文向量;对原文向量进行比较,如相同,获得原文。通过以上过程,有效的保证了数据的安全和数据的加密可靠传输。
Description
技术领域
本发明属于数据加密技术领域,涉及一种数据通讯加密解密方法。
背景技术
密码学是数学和计算机科学的结合,主要目标是使用加密技术实现数据的加密和解密。信息加密传输技术是发送者将信息加密传输,要求只有约定好的收件人才能解密信息,而中间人很难识别解密的技术。根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。Diffie-Hellman加密算法是非对称密钥加密算法,传输双方公开公有密钥,通过私有密钥解密。Diffie-Hellman算法为密码学研究者搭建了一个数据加密的平台,很多Diffie-Hellman的数学模型被应用于加密和解密。
本发明介绍了一种基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法,该算法利用密码向量和Fibonacci矩阵,实现数据的加密和解密,实现数据的验证,保障数据传输更安全可靠。
发明内容
本发明是一种加密方法,简称FBDH,主要研究目标是重要的短数据的加密传输,比如密码数据、电力控制命令等。其方法是:1)公开密钥是动态的,中间人无法知道私有密钥;2)通过密码向量实现数据验证,保证数据可靠性;3)Fibonacci矩阵增强数据的解密难度,逆矩阵容易,加密解密运算量少。此方法应用于密码交换和物联网数据的加密传输,从复杂度、解密难度、可靠性上得到很好的效果。
本发明所采用的FBDH加密方法是按照以下步骤进行:
先约定Alice与Bob通讯,Alice将数据加密,并将加密数据发送给Bob。
1、Alice做下列步骤:
Step1公开约定两个参数g,N;
Step2Alice生成私有密钥向量(x1,x2),选择自已的私有密钥向量(x1,x2),并计算X=(gx1mod N,gx2mod N),X作为公有密钥;
Step3选择Bob的公有密钥Y=(gy1mod N,gy2mod N),并计算密钥
K1=Yx=(gx1*y1mod N,gx2*y2mod N);
Step4想将数据m发给Bob,m如有4个字节,m=(m1,m2,m3,m4),
(当然m如有n个字节原理一样)。.
计算
C1(x,y)=((m1+gx1*y1)mod N,(m1+gx2*y2)mod N)
c2(x,y)=((m2+gx1*y1)mod N,(m2+gx2*y2)mod N)
c3(x,y)=((m3+gx1*y1)mod N,(m3+gx2*y2)mod N)
c4(x,y)=((m4+gx1*y1)mod N,(m4+gx2*y2)mod N)
Step5选择斐波纳契数列的递推矩阵
Step6计算斐波纳契变换矩阵E1,E2,E3,E4
Step7将Em转成顺序向量T
T={E1(x,y),E2(x,y),E3(x,y),E4(x,y)}
Step8公开将T发送给Bob
2、Bob做下列步骤:
Step1公开约定两个参数g,N;
Step2生成私有密钥向量(y1,y2),并计算Y=(gy1mod N,gy2mod N),Y作为公有密钥;Step3选择Alice的公有密钥X=(gx1mod N,gx2mod N),并计算密钥;
K2=Xy=(gx1*y1mod N,gx2*y2mod N);
Step4公开接收T,T={E1(x,y),E2(x,y),E3(x,y),E4(x,y)}
Step5计算
Step6计算并比较
1)计算:m1(x,y)=C1(x,y)-K2
如果m1(x)=m1(y)则m1=m1(x)
2)计算:m2(x,y)=C2(x,y)-K2
如果m2(x)=m2(y)则m2=m2(x)
3)计算:m3(x,y)=C3(x,y)-K2
如果m3(x)=m3(y)则m3=m3(x)
4)计算:m4(x,y)=C4(x,y)-K2
如果m4(x)=m4(y)则m4=m1(x)
最终获得m=(m1,m2,m3,m4)
3、Alice发送数据DATA给Bob,数据加密通讯流程图,如图1所示。
附图说明
图1为Alice发送数据给Bob通讯流程图。
具体实施方式
下面结合具体实施方式,对本发明FBDH加密方法,进行详细说明举例:
例如:Alice与Bob通讯,Alice将"LIKE"数据加密,并将加密数据发送给Bob。
本发明方法步骤如下:
1、Alice做下列步骤:
Step1公开约定两个参数g=15,N=197;
Step2选择自已的私有密钥向量x=(43,25),并计算X=(1543mod 197,1525mod197)=(146,173)作为公有密钥;
Step3选择Bob的公有密钥Y=(42,83),并计算密钥K1=(4243mod 197,8325mod197)=(187,161);
Step4想将数据m=“LIKE”发给Bob,m=(76,73,75,69),计算
c1(x,y)=((76+187)mod 197,(76+161)mod 197)=(66,40)
c2(x,y)=((73+187)mod 197,(73+161)mod 197)=(63,37)
c3(x,y)=((75+187)mod 197,(75+161)mod 197)=(65,39)
c4(x,y)=((69+187)mod 197,(69+161)mod 197)=(59,33)
Step5选择斐波纳契数列的递推矩阵:
Step6计算目标矩阵Cm:
Step7将Em转成顺序向量T,T={0x89,0x38,0x62,0x20,0x7c,0x30,0x2e,0x0}
Step8公开将T给Bob;
2、Bob做下列步骤:
Step1公开约定两个参数g=15,N=197;
Step2选择自已的私有密钥向量y=(166,35),并计算Y=(15166mod 197,1535mod197)=(42,83)作为公有密钥;
Step3选择Bob的公有密钥X=(146,173),并计算密钥K2=Xy=(146166mod 197,17335mod 197)=(187,161);
Step4公开接收T,T={0x89,0x38,0x62,0x20,0x7c,0x30,0x2e,0x0}
转换成10进制T={(137,56),(98,32),(124,48),(46,0)}
Step5计算
Step6计算并比较:
1)m1=((-131,237)-(187,161)mod 197=(76,76)
2)m2=((-134,234)-(187,161)mod 197=(73,73)
2)m3=((-132,236)-(187,161)mod 197=(75,75)
2)m4=((-138,230)-(187,161)mod 197=(69,69)
最终获得m=(76,73,75,69)
获得字符串“LIKE”
3、Python语言主要子程序的实现
1)子程序1:随机产生一个1到iMAX的NUM维向量,作为私有密钥x。
x=np.random.randint(1,imax,NUM)
2)子程序2:计算V=g^x mod N,输入参数:底数g,方根x,素数N。必须说明,不能直接求g^x,否则数据太大,必须采用循环语句计算。
def CalPow(g,x,N):
pow_V=1
for i in range(0,x):
pow_V=(pow_V*g)%N
return pow_V
3)子程序3:计算公有密钥密钥X
X=np.array([CalPow(g,x[i],N)for i inrange(NUM)])
4)子程序4:计算加密密钥K1
K1=np.array([CalPow(Y[i],x[i],N)for i in range(NUM)])
5)子程序5:加密数据data,输入参数:数据m_data,加密密钥K,素数N
def EncryData(m_data,K,N):
#数据加密钥数组
C=(K+m_data)%N
#print("加密钥:\n",(C))
#数据加密钥数组
mat_C=np.mat(C)
#斐波纳契数组
G=np.array(([8,5],[5,3]))
#斐波纳契矩阵
mat_G=np.mat(G)
#密钥矩阵FB变换矩阵
mat_E=mat_C*mat_G%N
#FB变换矩阵变换成加密数组,用于发送
EncryT=mat_E.getA()
#print("FB变换后的加密数组:\n",EncryT)
return EncryT5)子程序6:数据解密,输入参数:数据EncryT,解密密钥K,素数Ndef DecryData(EncryT,K,N):
#密钥矩阵
mat_E=np.mat(EncryT)
#斐波纳契
G=np.array(([-3,5],[5,-8]))
#斐波纳契逆矩阵
mat_G=np.mat(G)
#密钥矩阵逆变换
mat_C=mat_E*mat_G C=mat_C.getA()
#print("FB逆变换数组:\n",C)
#还原成解密数据
M=(C-K)%N
#print("解密数组:\n",M)
#判断二个数据是否相等
if(M[0][0]==M[0][1]):
m_data=M[0][0]
else:
m_data=0
return m_data
4、测试结果
Alice将LIKE发给Bob,运行结果如下:
1)运行一次,python程序输出:
===Alice===
Alice:私有的密钥x=[4579]
Alice:公有的密钥X=[148136]
===Bob===
Bob:私有的密钥y=[89165]
Bob:公有的密钥Y=[55121]
===Alice与Bob交换公有密钥X和Y后===
Alice:计算的加密密钥K1=[134 15]
Bob:计算的加密密钥K2=[134 15]
Alice与Bob有相同的密钥K1和K2
===Alice===
Alice需要发的数据:LIKE Alice发送加密的数据:0xa5,0x8d,0x7e,0x75,0x98,0x85,0x4a,0x55===Bob===
Bob接收加密的数据:0xa5,0x8d,0x7e,0x75,0x98,0x85,0x4a,0x55Bob解密数据:LIKE
2)再运行一次,python程序输出:
===Alice===
Alice:私有的密钥x=[4579]
Alice:公有的密钥X=[148136]
===Bob===
Bob:私有的密钥y=[89165]
Bob:公有的密钥Y=[55121]
===Alice与Bob交换公有密钥X和Y后===
Alice:计算的加密密钥K1=[134 15]
Bob:计算的加密密钥K2=[134 15]
Alice与Bob有相同的密钥K1和K2
===Alice===
Alice需要发的数据:LIKE
Alice发送加密的数据:0xa5,0x8d,0x7e,0x75,0x98,0x85,0x4a,0x55
===Bob===
Bob接收加密的数据:0xa5,0x8d,0x7e,0x75,0x98,0x85,0x4a,0x55
Bob解密数据:LIKE
===Alice===
Alice:私有的密钥x=[34 70]
Alice:公有的密钥X=[150 191]
===Bob===
Bob:私有的密钥y=[19175]
Bob:公有的密钥Y=[155 33]
===Alice与Bob交换公有密钥X和Y后===
Alice:计算的加密密钥K1=[154 1]
Bob:计算的加密密钥K2=[154 1]
Alice与Bob有相同的密钥K1和K2
===Alice===
Alice需要发的数据:LIKE
Alice发送加密的数据:0x3a,0x2,0x13,0xaf,0x2d,0xbf,0xa4,0x8f
===Bob===
Bob接收加密的数据:0x3a,0x2,0x13,0xaf,0x2d,0xbf,0xa4,0x8f
Bob解密数据:LIKE
3)二次结果比较:
Alice想将数据LIKE发给Bob,公有密钥和私有密钥都是动态的,二次发送的加密数据是不同的,但Bob解密数据结果是相同的。
第一次发的数据是0xa5,0x8d,0x7e,0x75,0x98,0x85,0x4a,0x55,
第二次发的数据是0x3a,0x2,0x13,0xaf,0x2d,0xbf,0xa4,0x8f,
分析结论:通讯双方每次的公开密钥是不一样的,且各自计算出的用于加密和解密的密钥也是不同的,这样解决了密钥窃听问题,并防止了中间人攻击。加密数据通过Fibonacci矩阵变换增强了数据的保密性。通过密码向量加密,最终获得原文向量,比较原文向量,增强通讯可靠性。测试结果表明,FBDH具有较高的安全性和可靠性。
以上所述仅是对本发明的较佳实施方式而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质,对以上实施方式所做的任何简单修改,等同变化与修饰,均属于本发明技术方案的范围内。
Claims (1)
1.一种基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法,其特征在于:按照以下步骤进行:
1)双方公开约定两个参数,一个整数g,一个素数N;
2)双方各自产生一个私有密钥向量x(x1,x2)和y(y1,y2),并计算出各自的公开密钥向量X和Y,X=(gx1 mod N,gx2 mod N),Y=(gy1 mod N,gy2 mod N);
3)双方对X和Y进行交换;公开密钥向量交换后,双方计算出用于加密和解密的密钥向量K1和K2,K1=Yx=(gx1y1 mod N,gx2y2 mod N),K2=Xy(gx1y1 mod N,gx2y2 mod N);
4)发送方通过密钥K1加密数据m,形成加密矩阵c(x,y),c(x,y)=((m+gx1y1)mod N,(m+gx2y2)mod N);
对加密矩阵c(x,y)通过Fibonacci矩阵Gn变换,最终获得加密数据向量Em,Em=c(x,y)×Gn;
接收方接收加密数据向量Em,通过Fibonacci逆矩阵G-n变换获得加密矩阵C(x,y),C(x,y)=Em×G-n,再经过K2解密报文,最终获得原文向量m(x,y),m(x,y)=C(x,y)-K2;
5)对原文向量进行比较,若m(x)与m(y)相等,则m等于m(x),即接收方获得数据m的原文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810119265.1A CN108337087B (zh) | 2018-02-06 | 2018-02-06 | 基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810119265.1A CN108337087B (zh) | 2018-02-06 | 2018-02-06 | 基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108337087A CN108337087A (zh) | 2018-07-27 |
CN108337087B true CN108337087B (zh) | 2023-09-12 |
Family
ID=62926940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810119265.1A Active CN108337087B (zh) | 2018-02-06 | 2018-02-06 | 基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108337087B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110958255B (zh) * | 2019-12-06 | 2022-07-29 | 杭州安恒信息技术股份有限公司 | 一种数据传输方法、装置及电子设备和存储介质 |
CN111431716B (zh) * | 2020-03-30 | 2021-03-16 | 卓尔智联(武汉)研究院有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN112000994B (zh) * | 2020-10-29 | 2021-04-27 | 深圳市智绘科技有限公司 | 车辆控制方法、服务器、终端设备及存储介质 |
CN118098590A (zh) * | 2024-03-08 | 2024-05-28 | 南京优悠健康科技有限公司 | 健康状态智能分析预测预警系统及其方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9628273B2 (en) * | 2014-04-30 | 2017-04-18 | Thamir Alshammari | Cryptographic method and system for secure authentication and key exchange |
-
2018
- 2018-02-06 CN CN201810119265.1A patent/CN108337087B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108337087A (zh) | 2018-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831430B (zh) | 一种云计算环境下的安全可控高效的数据共享方法及系统 | |
CN108337087B (zh) | 基于密码向量和斐波纳契矩阵的Diffie-Hellman加密方法 | |
CN108282329B (zh) | 一种双向身份认证方法及装置 | |
US8223970B2 (en) | Message deciphering method, system and article | |
CN105245326B (zh) | 一种基于组合密码的智能电网安全通信方法 | |
CN108347404B (zh) | 一种身份认证方法及装置 | |
CN105025024B (zh) | 一种基于无证书条件代理重加密系统与方法 | |
CN103957109A (zh) | 一种云数据隐私保护安全重加密方法 | |
CN110535626B (zh) | 基于身份的量子通信服务站保密通信方法和系统 | |
CN109978515B (zh) | 一种基于量子多重代理盲签名的第三方电子支付方法 | |
CN104519071A (zh) | 一种具有选择和排除功能的群组加解密方法及系统 | |
CN112865955B (zh) | 多接收者代理重加密方法、系统、电子装置及存储介质 | |
CN105391554A (zh) | 一种采用密文实现指纹匹配的方法和系统 | |
CN109547413B (zh) | 具有数据源认证的可转换的数据云存储的访问控制方法 | |
CN104243493A (zh) | 一种网络身份认证方法及系统 | |
CN111416712B (zh) | 基于多个移动设备的量子保密通信身份认证系统及方法 | |
Tan et al. | MPCAuth: multi-factor authentication for distributed-trust systems | |
CN111526131B (zh) | 基于秘密共享和量子通信服务站的抗量子计算的电子公文传输方法和系统 | |
CN113242129A (zh) | 一种基于格加密的端到端数据机密性和完整性保护方法 | |
CN114070549A (zh) | 一种密钥生成方法、装置、设备和存储介质 | |
US8484471B2 (en) | Multi-party distributed multiplication device, multi-party distributed multiplication system and method | |
CN116743358A (zh) | 一种可否认的多接收者认证方法及系统 | |
WO2020115266A1 (en) | Methods and devices for secured identity-based encryption systems with two trusted centers | |
CN114070550B (zh) | 一种信息处理方法、装置、设备和存储介质 | |
CN114285580B (zh) | 一种从无证书到公钥基础设施的在线离线签密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |