日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab拉丁方,基于拉丁方的流密码算法设计与仿真

發布時間:2023/12/18 循环神经网络 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab拉丁方,基于拉丁方的流密码算法设计与仿真 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 引言

眾所周知,加密算法是密碼學的基礎知識,是保護信息安全的一種基本方法,其中的流密碼算法具有加解密速度快和安全性高等優點,因而在信息安全領域有著廣泛應用。參照最近建立的完善保密系統一般模型,流密碼算法的關鍵是基本密碼系統和密鑰流序列的設計。由文獻 [1] [2] [3] [4] [5] 可知,當前常見的模2加法流密碼算法的基本密碼系統是由二元加法設計的,該運算過于簡單,不利于設計出性能優良的流密碼算法。最近,文獻 [6] 利用了比模2加法更復雜的4階拉丁方運算來設計基本密碼系統,為流密碼算法設計指明了一條新的設計路線。同時,文獻 [7] [8] 也相繼研究了16階拉丁方構造基本密碼系統的方法。由于拉丁方的數量會隨著階數的增加呈指數式增加,因此,文獻 [6] [7] [8] 所能構造的拉丁方及其基本密碼系統是十分有限的,還有許多問題值得進一步研究。當前,基于拉丁方設計基本密碼系統的研究還未充分展開,它們在流密碼算法設計中的應用還很狹窄。為了進一步推廣二元加法流密碼算法的設計方法,本文將給出一種任意有限階拉丁方及其基本密碼系統構造的新方法,并結合常見的Logistic離散混沌設計一種新的流密碼算法。

2. 一些基本概念

參照現有密碼學文獻,流密碼算法的基本步驟為:1) 設明文序列為

m

=

m

0

m

1

m

2

? ;2) 利用密鑰k和密鑰流發生器產生一個密鑰流序列

z

=

k

0

k

1

k

2

? ;3) 利用加密變換E逐個加密明文得到密文

c

=

c

0

c

1

c

2

?,其中,

c

j

=

E

(

k

j

,

m

j

),對任意

j

=

0

,

1

,

2

,

? ;4) 利用解密變換D將c依次解密恢復出明文序列

m

=

D

(

k

0

,

c

0

)

D

(

k

1

,

c

1

)

D

(

k

2

,

c

2

)

?。

由文獻 [6] 知,在常見的二元流密碼算法中,加解密變換E和D都是模2加法。由于基本明文空間和密文空間

Z

2

=

{

0

,

1

} 元素很少,因而所能設計的基本密鑰變換和基本密碼系統都很簡單,且數量很少 [6]。為了改進這種常見的模2加法的基本加密方式,文獻 [7] [8] 分別研究了單個16階拉丁方構造基本密碼系統的設計方法,但所構造的基本密碼系統類型仍然有限。本文將研究新的高階拉丁方及其相應的基本密碼系統的設計方法。

定義2.1 設n階方陣

A

=

(

a

i

j

)

n

×

n,

n

{

2

,

3

,

4

,

?

} 滿足

a

i

j

{

0

,

1

,

?

,

n

?

1

}。如果

Z

n

=

{

0

,

1

,

2

,

?

,

n

?

1

} 上所有不同的數字在n階方陣A的每行和每列中都出現,則稱A為n階拉丁方。

由于基本密碼系統取決于選取的拉丁方,因此需要研究拉丁方的構造方法??紤]到同一個整數都能利用十進制和二進制兩種不同形式加以表示,為了便于表述,下面將十進制整數集

Z

2

t

=

{

0

,

1

,

?

,

2

t

?

1

} 和二進制數集

Z

2

t

=

{

0

?

00

,

0

?

01

,

1

?

11

} 不加區別,且把它們對應相等的數也不加區別。

定理2.1 設

n

=

2

t。在

Z

n

=

Z

2

t 上定義變換或函數:對任一

m

=

m

1

m

2

m

3

?

m

t

Z

n,

m

j

Z

2,對任一

j

=

1

,

2

,

?

,

t,定義

f

0

(

m

)

=

m

t

m

t

?

1

?

m

2

m

1,

f

1

(

m

)

=

m

t

m

t

?

1

?

m

2

m

ˉ

1,

f

2

(

m

)

=

m

t

m

t

?

1

?

m

ˉ

2

m

1,

?,

f

n

?

1

(

m

)

=

m

ˉ

t

m

ˉ

t

?

1

?

m

ˉ

2

m

ˉ

1。記

A

=

(

a

i

j

)

n

×

n

=

(

f

0

(

0

)

f

0

(

1

)

?

f

0

(

n

?

1

)

f

1

(

0

)

f

1

(

1

)

?

f

1

(

n

?

1

)

?

?

?

?

f

n

?

1

(

0

)

f

n

?

1

(

1

)

?

f

n

?

1

(

n

?

1

)

)

A

=

(

a

i

j

)

n

×

n 是一個n階拉丁方。

證明:當

m

=

m

1

m

2

m

3

?

m

t

Z

n 依次取遍

0

,

1

,

?

,

n

?

1 時,對于固定的

j

=

0

,

1

,

?

,

n

?

1,依次計算

f

j

(

m

) 會得到一個n維向量,它正好是向量

(

0

,

1

,

?

,

n

?

1

) 的一個置換。因此,矩陣

A

=

(

a

i

j

)

n

×

n 中每一行的全部元素是由

0

,

1

,

?

,

n

?

1 組成的。而且,由變換

f

0

,

f

1

,

?

,

f

n

?

1 的定義,不難發現,當選定一個元素

m

=

m

1

m

2

m

3

?

m

t

Z

n 時,

f

0

(

m

)

,

f

1

(

m

)

,

?

,

f

n

?

1

(

m

) 都不相同,因此,

A

=

(

a

i

j

)

n

×

n 中每一列的全部元素也是由

0

,

1

,

?

,

n

?

1 組成的。于是,由定義2.1可知,

A

=

(

a

i

j

)

n

×

n 是一個n階拉丁方,證畢!

特別地,當t取8時,由定理2.1可得如下28階拉丁方

L

256

×

256

=

[

0

128

64

192

?

255

1

129

65

193

?

254

2

130

66

194

?

253

3

131

67

195

?

252

?

?

?

?

?

?

255

127

191

63

?

0

]

=

[

T

0

T

1

T

2

T

3

?

T

255

]

其中,

T

0

:

Z

256

?

Z

256 表示可逆變換:

T

0

(

0

)

=

0

,

T

0

(

1

)

=

128

,

?

,

T

0

(

255

)

=

255 等,其中,將

Z

256 與

Z

2

8 中相互對應的數不加以區別。因此,基于L設計的理論基本密碼系統

(

M

,

C

,

T

) 滿足

M

=

C

=

Z

2

8

=

Z

256 和

T

=

{

T

0

,

T

1

,

?

,

T

255

}。類似于文獻 [6] 中的記號,下面將所設計的流密碼系統的具體明文單元設為

m

j

M,對任意

j

=

0

,

1

,

2

,

?,等等。

3. 一種新的流密碼算法設計

3.1. 算法描述

參照文獻 [6],保密系統定義為從明文集M到密文集C的一組可逆變換T,可將每次加密的最小明文單元稱為基本明文。基本密鑰、基本密文和基本加解變換可類似定義。當

M

,

T

,

C 都是基本單元時,稱

(

M

,

T

,

C

) 為理論基本(密碼)系統。

T

?

1 為理論密鑰(變換)集T的逆變換集。應用密碼系統可類似定義。為了方便實際使用,有必要將T和

T

?

1 轉化為集合K和加密變換E與解密變換D來實現。上面已設計出一個理論基本系統

(

M

,

T

,

C

),因而還需要設計與它對應的實際基本(密碼)系統

(

M

,

C

,

K

,

E

,

D

)。

1) 實際基本密碼系統的設計

(

M

,

C

,

K

,

E

,

D

)

先將

T

=

{

T

0

,

T

1

,

T

2

,

?

,

T

255

} 中每個變換的計算公式表示為:對任意

m

=

m

0

m

1

m

2

?

m

7

Z

2

8,

T

0

(

m

)

=

m

7

m

6

?

m

1

m

0,

T

1

(

m

)

=

m

7

m

6

?

m

1

m

ˉ

0,

T

2

(

m

)

=

m

7

m

6

?

m

ˉ

1

m

0,

?,

T

255

(

m

)

=

m

ˉ

7

m

ˉ

6

?

m

ˉ

1

m

ˉ

0,

其中,

m

i

Z

2,

m

ˉ

i

=

1

?

m

i,

i

=

0

,

1

,

?

,

7。這樣,實際基本密鑰空間

K

=

Z

256 滿足

k

?

T

k,對任意

k

K

=

Z

2

8。因此,基本加密函數E的計算公式為

c

=

E

(

k

,

m

)

=

T

k

(

m

)。

為了方便實際應用,可將基本加密函數E和解密函數D的具體計算公式設計如下:

a) 基本加密函數E:對任一8比特基本明文

m

=

m

0

m

1

?

m

7

Z

2

8 和8比特密鑰

k

=

k

0

k

1

k

2

?

k

7

Z

2

8,其中

m

0

,

m

1

,

?

,

m

7

,

k

0

,

k

1

,

?

,

k

7

Z

2,將加密變換

c

=

E

(

k

,

m

) 統一設計為

c

=

(

m

7

k

0

)

(

m

6

k

1

)

(

m

5

k

2

)

(

m

4

k

3

)

(

m

3

k

4

)

(

m

2

k

5

)

(

m

1

k

6

)

(

m

0

k

7

),

其中,

⊕ 表示異或運算,多個相連的圓括號表示將多個比特組成一個多比特序列。

b) 基本解密函數D:對任一8比特密文

c

=

c

0

c

1

c

2

?

c

7

Z

2

8 和8比特密鑰

k

=

k

0

k

1

k

2

?

k

7

Z

2

8,其中

c

0

,

c

1

,

?

,

c

7

,

k

0

,

k

1

,

?

,

k

7

Z

2,可將解密變換

m

=

D

(

k

,

c

) 設計為

m

=

(

c

7

k

7

)

(

c

6

k

6

)

(

c

5

k

5

)

(

c

4

k

4

)

(

c

3

k

3

)

(

c

2

k

2

)

(

c

1

k

1

)

(

c

0

k

0

)。

至此就完成了實際基本密碼系統

(

M

,

C

,

K

,

E

,

D

) 的設計。

易見,本基本密碼系統是利用定理2.1中的高階拉丁方設計的,不過,類似于上述方法,若將定理2.1中拉丁方的階數t加以改變,則可得到不同的拉丁方,進而可設計出不同的基本密碼系統。本文不再考慮了。

2) 應用密碼系統中密鑰流序列的設計

上面已設計出實際基本密碼系統

(

M

,

C

,

K

,

E

,

D

),還需要設計應用密鑰序列空間才能構成一個完整的流密碼算法。下面再來討論應用系統中密鑰序列空間的設計問題,將利用現有的Logistic混沌系統作為一個密鑰流發生器來對密鑰流序列空間進行設計。該混沌系統表達式如下:

x

n

+

1

=

μ

x

n

(

1

?

x

n

)

其中

x

n

[

0

,

1

],對任意的

n

=

0

,

1

,

2

,

?,且

μ

[

0

,

4

]。當

μ

[

3.571448

,

4

] 時,系統會處于混沌狀態。

綜合上述基本密碼系統和Logistic混沌系統,下面將給出一種新的流密碼算法設計步驟:

1) 選擇一幅數字灰度圖像作為明文,在Matlab軟件中,該明文可表示成一個矩陣

I

=

(

m

i

j

)

m

×

n,其中,

m

i

j

Z

256,對任意

i

,

j

=

0

,

1

,

?

,

255 ;

2) 將矩陣I按照從左到右,從上到下的順序轉化為明文序列

m

=

m

?

1

m

?

2

m

?

3

?,其中

m

?

i

Z

256 ;

3) 設

μ

1

,

x

0

,

μ

2

,

y

0

,

μ

3,

μ

1

,

μ

2

,

μ

3

[

3.571448

,

4

],

x

0

,

y

0

[

0

,

1

] 為算法的5個密鑰,其中

μ

1,

μ

2,

μ

3 為Logistic混沌3個不同的控制參數,

x

0 和

y

0 為2個初值。將

x

0 和

y

0 分別代入

μ

1 和

μ

2 所決定的Logistic混沌系統,重復迭代500次可使得解序列較為混亂,并記

w

0

=

(

x

501

+

y

501

)

/

2 ;

4) 將

w

0 作為初值帶入

μ

3 所決定的Logistic混沌系統,進行多次迭代,并舍去前500個數值,令

k

0

=

r

o

u

n

d

(

w

501

)

,

k

1

=

r

o

u

n

d

(

w

502

)

,

?

?

?,可得密鑰流序列

z

=

k

0

k

1

?,

k

j

Z

2,將密鑰流序列按每8比特進行分組,將分組后的序列記為

z

?

=

k

?

0

k

?

1

?,其中

k

?

0

=

k

0

k

1

k

2

k

3

k

4

k

5

k

6

k

7

Z

256 等;

5) 加密變換:按照加密變換

E

:

c

?

j

=

E

(

k

?

j

,

m

?

j

)

,

j

=

1

,

2

,

?,依次對明文單元

m

?

j 加密,可得密文單元序列

c

=

c

?

1

c

?

2

?,若有必要,可將c變換為2元密文序列;

6) 解密變換:按照解密變換

D

:

m

?

j

=

D

(

k

?

j

,

c

?

j

)

,

j

=

1

,

2

,

?,依次對密文單元

c

?

j 解密,可得明文單元序列

m

=

m

?

1

m

?

2

?。然后可將m還原為原數字圖像矩陣

I

=

(

m

i

j

)

m

×

n。

3.2. 實驗結果與分析

將上述密碼算法運用于數字圖像加解密,取密鑰

x

0

=

0.

5

78,

y

0

=

0.189,

μ

1

=

3.723,

μ

2

=

3.912,

μ

3

=

4.000,與文獻 [9] 中常用密碼算法進行對比,Matlab仿真的加解密效果圖及灰度直方圖如下:

圖1(e)~(g)分別為原始圖像、本算法加密圖像、對比算法加密圖像的像素分布直方圖,從圖中可看出,兩種算法都能對原始圖像進行有效的加解密,密文圖像的灰度直方圖都接近均勻分布,能抵抗統計分析。更進一步,根據式(3-1)再對兩種算法加密圖像的相鄰像素間的相關性進行計算,結果如表1。

r

x

y

=

cov

(

x

,

y

)

D

(

x

)

D

(

y

) (3-1)

(a) 原始圖像

(b) 加密后的圖像

(c) 解密后的圖像

(d) 常用算法加密圖像

(e) 原始圖片直方圖

(f) 本算法加密圖像直方圖

(g) 常用算法加密圖像直方圖

Figure 1. Algorithm simulation renderings

圖1. 算法仿真效果圖

Table 1. Correlation simulation data

表1. 相關性仿真數據

其中:

cov

(

x

,

y

)

=

1

N

i

=

1

N

(

x

i

?

E

(

x

)

)

(

y

i

?

E

(

y

)

)

,

D

(

x

)

=

1

N

i

=

1

N

(

x

i

?

E

(

x

)

)

2

,

E

(

x

)

=

1

N

i

=

1

N

x

i

從表1中可看出,兩種算法加密后的圖像,在各個方向上相鄰像素間的關系幾乎為零,這說明像素間基本沒有相關性。其次從表1中可知,本算法加密后的圖像除了在豎直方向上僅有微小的差異外,在水平和對角方向上都比常見的流密碼算法具有更低的像素相關性,這說明新算法具有更好的置亂效果。

下面對密鑰空間進行分析。本算法包括五個密鑰

x

0

,

y

0

,

μ

1

,

μ

2

,

μ

3,假設計算精度為10?16,則密鑰空間約為

10

80

2

256。一般認為密鑰空間大于2128便能抵抗窮舉攻擊,因而本密碼算法具有較強的抗窮舉攻擊的能力。另外,再對密鑰敏感性進行測試,密鑰敏感性指的是當密鑰發生細小變化時,系統加解密效果會發生顯著變化。為了評估本文所提出的加密算法的密鑰敏感度,假定

μ

1

,

μ

2

,

μ

3 為固定值,采用了差別極其微小的兩組密鑰

key

1

=

{

x

0

:

0.278

,

y

0

:

0.189

} 和

key2

=

{

x

0

:

0.278

0000001

,

y

0

:

0.189

} 分別對圖像進行加解密,測試結果如圖2所示。分析圖2知,即使對解密密鑰進行微小的改動,也無法恢復出明文,這說明本文所設計的算法對密鑰極度敏感。

(a) 原始圖像

(b) key1的加密圖像

(c) key1的解密圖像

(d) key2的解密圖像

Figure 2. Key sensitivity test

圖2. 密鑰敏感性測試

下面再進行信息熵分析。根據圖像信息熵的定義式(3-2)和最大熵原理知,由于本文所選取的Lena圖像的灰度取值范圍是[0, 255],故圖像中各像素值等概率出現時最大信息熵達到8。其中熵的計算公式為

H

(

X

)

=

?

i

=

1

256

P

(

x

i

)

log

2

P

(

x

i

) (3-2)

根據本文所選取的數字圖像計算,可得原始圖像信息熵為7.3722,文獻 [9] 中的算法加密后的信息熵為7.9856,本算法加密后的圖像信息熵為7.9994。從結果可看出,本算法加密后的圖像信息熵比常用密碼算法加密后的圖像信息熵更接近理想值,故新密碼算法具有更好的性能。

4. 小結

本文提出了一種高階拉丁方的構造方法,并研究了這種拉丁方構造基本密碼的設計問題,以及結合常見的密鑰流產生器提出了一種新的流密碼算法。通過與常見流加密算法對比分析可知,該算法密鑰空間大,且加密后的圖片信息熵更接近理想信息熵,因此該算法具有更強的抗攻擊能力,具有一定的實用參考價值。

總結

以上是生活随笔為你收集整理的matlab拉丁方,基于拉丁方的流密码算法设计与仿真的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。