電子商務安全技術

學識都 人氣:1.05W

大數指的是超出計算機字長的一種數值計算方式,以下是小編蒐集整理的一篇探究電子商務安全技術的論文範文,歡迎閱讀查看。

電子商務安全技術

 摘要:今天電子商務安全技術主要指的是交易對象的身份認證,交易過程的安全。安全技術的基礎就是大數運算。例如RSA數字簽名算法它的安全性就是建立在大數計算上,該數字簽名算法的數據安全長度爲1024位,該長度遠遠超過了計算機的字長,所以在處理過程中無法使用單變量直接運算,而必須設計出相應的算法,實現大數運算。本文給出大數無符號整數四則運算(大數加減乘除)。

關鍵詞:電子商務 安全技術 四則運算 VB程序源碼

1 前言

電子商務安全技術基礎就是大數計算。所謂大數指的是超出計算機字長的'一種數值計算方式,例如使用VB設計程序時數據是保存在變量中,使用的變量分爲不同類型,其中包括字節型Byte佔用一個字節,整型Integer佔用兩個字節,長整型Long佔用四個字節,雙精度Double佔用八個字節。所以使用變量表示數據或進行數據運算時最大的數據使用Double型佔用八個字節共64Bits,如果處理的數據長度在64Bits以下可以直接使用變量直接進行運算,如果處理的數據長度超出64Bits,就無法使用變量直接進行運算,而必須設計出相應的算法模型。

2 二進制整型數組

數制是數據表示的一種方式。在生活當中我們通常使用的數制是十進制,而計算機中使用的是二進制,在程序設計時還可能用到八進制或十六進制。對同一個數值可以用不同的數製表示方式。

對比不同數制數值的運算,十進制手工計算比較常用,而使用計算機進行計算時十進制就非常麻煩,解決的辦法就是使用二進制數據。在上一篇論文《任意長度數制轉換》當中闡述了二進制和十進制之間的轉換,其中子程序Longdtob是將十進制數據轉換成二進制數據,子程序Longbtod是將二進制數據轉換成十進制數據。這兩個轉換子程序是在不同數制字符串之間的轉換,但是這種轉換的字符串數據還不能用於計算,爲此我們必須對計算用的數據進行如下處理:

本文設計的算法模型是採用二進制整型數組來保存數據。

數組定義語句爲Dim mva(2050) as integer。數組名爲mva,數組元素個數爲2050,在此元素的個數就是表示二進制數值數據的長度。如果需要可以增加元素個數,這樣就達到增加處理數據的長度。每一個數組元素值只有1或0兩個。

下面是兩個轉換子程序,一個是二進制字符串轉二進制整型數組,另一個是二進制整型數組轉二進制字符串。

(1)二進制字符串轉二進制整型數組子程序。

轉換子程序定義

Public Sub binstobinv(ByVal vs As String, ByVal sl As Integer, ByRef binv() As Integer, ByRef sst0 As Integer, ByRef sed0 As Integer, ByRef scrt As String)

Dim i As Integer, j As Integer

sst0 = sed0 - sl + 1

j = sed0 - sst0 + 1

For i = sed0 To sst0 Step -1

binv(i) = Val(Mid(vs, j, 1))

j = j - 1

Next i

scrt = "S"

End Sub

二進制字符串轉二進制整型數組子程序調用:

bins =”1101”

binl = Len(bins)

st0 = 1

ed0 = 2050

Call binstobinv(bins,binl,binv(),st0,ed0,svrt)

子程序運算結果

Binv(2047)=1

Binv(2048)=1

Binv(2049)=0

Binv(2050)=1

st0=2047

ed0=2050

(2)二進制整型數組轉二進制字符串子程序。

轉換子程序定義

Public Sub binvtobins(ByRef binv() As Integer,ByVal sst0 As Integer,ByVal sed0 As Integer,ByRef vs As String,ByRef vsl As Integer,ByRef scrt As String)

Dim i As Integer

i = sst0

vs = ""

vsl = 0

Do

If binv(i) <> 0 And vsl = 0 Then

vsl = sed0 - i + 1

End If

If binv(i) = 0 And vsl = 0 Then

Else

If binv(i) = 0 Then

vs = vs + "0"

Else

vs = vs + "1"

End If

End If

i = i + 1

If i > sed0 Then

Exit Do

End If

Loop

If sst0 = sed0 And binv(sst0) = 0 Then vs = "0"   If sst0 = sed0 And binv(sst0) = 1 Then vs = "1"

scrt = "S"

End Sub

二進制整型數組轉二進制字符串子程序調用:

St0=2046

ed0 = 2050

binv(2046)=1

binv(2047)=0

binv(2048)=1

binv(2049)=1

binv(2050)=1

Call binvtobins(binv(), st0, ed0, binsv, binlv, svrt)

子程序運算結果

Binsv=”10111”

Blnlv=5

用二進制整型數組用來保存任意長度二進制數據,運算的時候也使用二進制整型數組。

3 無符號整型四則運算

數學中數值的基本運算指的是四則運算,也就是常說的加減乘除運算,在運算除法時還可以得到一個模。在計算機中進行程序設計時數據運算的複雜程度不一樣,十進制最複雜,而使用二進制最爲簡便。

(1)加法子程序Longadd。

1101 vad1(2050)被加數

+ 110 vad2(2050)加數

10011 vad0(2050)結果和

1100 mc是進位

加法子程序調用:

vad1(2047)=1 被加數

vad1(2048)=1

vad1(2049)=0

vad1(2050)=1

sst1=2047

sed1=2050

vad1(2048)=1 加數

vad1(2049)=1

vad1(2050)=0

sst2=2048

sed2=2050

Call longadd(vad1(), sst1, sed1, vad2(), sst2, sed2, vad0(), sst0, sed0, svrt)

運算結果

vad0(2046)=1 和

vad0(2047)=0

vad0(2048)=0

vad0(2049)=1

vad0(2050)=1

sst0=2046

sed0=2050

(2)減法子程序Longsub。

110 mc借位

1101 vad1()被減數

- 110 vad2()減數

111 vad0()結果差

使用此模型時被減數要大於等於減數。

減法計算過程子程序Longsub調用:

vad1(2047)=1 被減數

vad1(2048)=1

vad1(2049)=0

vad1(2050)=1

sst1=2047

sed1=2050

vad2(2048)=1 減數

vad2(2049)=1

vad2(2050)=0

sst2=2048

sed2=2050

Call longsub(vad1(),sst1,sed1,vad2(),sst2,sed2,vad0(),sst0,sed0,svrt)

運算結果

Vad0(2048)=1 差

Vad0(2049)=1

Vad0(2050)=1

Sst0=2048

Sed0=2050

(3)乘法子程序Longmul。

1101 vad1(2050)被乘數

x 110 vad2(2050)乘數

0000 smm(2050,2050)中間結果

1101

+ 1101 縱向累加得到乘積

1001110 vad0(2050)積

在計算乘法時使用一個二進制整型二維數組smm()保存中間結果。在計算時縱向保存每一個乘數數位乘上被乘數,填寫好數據以後從個位向左縱向相加得到乘法的積。

乘法計算過程子程序Longmul調用:

vad1(2047)=1 被乘數

vad1(2048)=1

vad1(2049)=0

vad1(2050)=1

sst1=2047

sed1=2050

vad2(2048)=1 乘數

vad2(2049)=1

vad2(2050)=0

sst2=2048

sed2=2050

Call longmul(vad1(),sst1,sed1,vad2(),sst2,sed2,vad0(),sst0,sed0,svrt)

運算結果

vad0(2044)=1 積

vad0(2045)=0

vad0(2046)=0

vad0(2047)=1

vad0(2048)=1

vad0(2049)=1

vad0(2050)=0

Sst0=2044   Sed0=2050

(4)除法子程序Longdiv。

vads(2050) 商

vad2(2050)除數 1101 vad1(2050)被除數

vady(2050) 餘數(模)

除法計算過程:

用vad2()與vad1()逐段進行比較,小於等於時商1,大於時商0(商vads()),vady()在除不盡的時候保存餘數(也被稱作模)。

除法子程序Longdiv調用:

vad1(2043)=1 被除數

vad1(2044)=1

vad1(2045)=1

vad1(2046)=1

vad1(2047)=0

vad1(2048)=0

vad1(2049)=0

vad1(2050)=1

sst1=2043

sed1=2050

vad2(2047)=1 除數

vad2(2048)=1

vad2(2049)=0

vad2(2050)=1

sst2=2047

sed2=2050

Call longdiv(vad1(),sst1,sed1,vad2(),sst2,sed2,vads(), vssts, vseds, vady(), vssty, vsedy, svrt)

運算結果

vads(2046)=1 商

vads(2047)=0

vads(2048)=0

vads(2049)=1

vads(2050)=0

vssts=2046

vseds=2050

vady(2048)=1 餘

vady(2049)=1

vady(2050)=1

vssty=2048

vsedy=2050

4 結語

大數運算是通過設計的算法進行加減乘除四則運算,本文設計的算法是採用二進制整型數組保存長度超出計算機字長的數據。文中數組的長度決定了處理的二進制數據數值的大小,本文的數組長度是2050個二進制數位,如果需要可以任意增加數組的長度,只要計算機的內存足夠大。目前我們使用的計算機基本上都能夠滿足這個要求,四則運算的難點是除法,如果使用十進制非常複雜,相對來講二進制相對來講要容易一些。

當前論文是系列論文的第二篇“任意長度數值無符號整數四則運算”,上一期《數字技術與應用》發表了“任意長度數值數制轉換”。後續論文包括第三篇“任意長度數值有符號整數四則運算”。第四篇“任意長度數值實數四則運算”。在系列論文全部發表以後歡迎讀者向作者索取VB程序源碼。希望讀者能夠繼續關注《數字技術與應用》。

參考文獻

[1]衷仁保著.《計算機代數學》.科學出版社.

[2]BruceSchneier著,吳世忠譯.《應用密碼學》.機械工業出版社.

[3]馮萍著.《彙編語言與接口技術》.機械工業出版社.

[4]Mohan Atreya著,賀軍等譯.《數字簽名》.清華大學出版社.