学习啦>论文大全>技术论文>

浅谈电子商务安全技术论文

时间: 家文952 分享

  电子商务安全技术基础就是大数计算。所谓大数指的是超出计算机字长的一种数值计算方式,小编整理了浅谈电子商务安全技术论文,欢迎阅读!

  浅谈电子商务安全技术论文篇一

  电子商务安全技术

  摘要:今天电子商务安全技术主要指的是交易对象的身份认证,交易过程的安全。安全技术的基础就是大数运算。例如RSA数字签名算法它的安全性就是建立在大数计算上,该数字签名算法的数据安全长度为1024位,该长度远远超过了计算机的字长,所以在处理过程中无法使用单变量直接运算,而必须设计出相应的算法,实现大数运算。本文给出大数无符号整数四则运算(大数加减乘除)。

  关键词:电子商务 安全技术 四则运算 VB程序源码

  中图分类号:TP393.08 文献标识码:A 文章编号:1007-9416(2013)10-0200-03

  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著,贺军等译.《数字签名》.清华大学出版社.

点击下页还有更多>>>浅谈电子商务安全技术论文

2589894