网上交易加密方式
来源:互联网 发布:天天炫舞代购充值端口 编辑:程序博客网 时间:2024/06/09 18:11
随着网上电子商务发展,网上支付日益普及。各机构互相之间的接口也日益增多,如电子商务公司与银行之间的支付接口;电子商务公司与下级代理商之间的支付接口等等。下面我介绍几种常用的支付接口的加密方式。
一、最常用最简单的加密方式是支付url是经过md5(或Sha1)签名的,支付请求。
例如:调用某接口需要以下参数
id=123456
partner=2088006300000000
account=test@msn.com
电子商务公司与下级代理商之间约定一个key(安全校验码)=1234567890123
那么待签名数据就是:
id=123456&partner=2088006300000000&account=test@msn.com&key=1234567890123
将待签名数据进行md5(或Sha1)加密,假设加密后的数据是:
8d5835495b1d732a5216794ca52f59216daed8e41b34
那么支付的url就是:
http://url/xxx.aspx?id=123456&partner=2088006300000000&account=test@msn.com&sign=8d5835495b1d732a5216794ca52f59216daed8e41b34
下级代理商通过此url访问电子商务公司的支付接口,电子商务公司在 http://url/xxx.aspx文件检查数据的合法性:
将传递过来的
http://url/xxx.aspx?id=123456&partner=2088006300000000&account=test@msn.com参数加上约定安全校验码(key=1234567890123)进行md5(或Sha1)加密后生成一个加密串,再跟传递过来的sign参数对比,如果正确的话就接受请求,否则就视为非法请求。
由于每次请求都会产生不同的加密串,只要约定的key(安全校验码)不泄露,别人就很难破解其加密串。现在很多公司的都是采用这种方式加密的,如:阿里巴巴的支付宝、腾讯的财付通、快钱,还有很多游戏公司销售直通车等等。
二、使用 SHA1RSA算法加密,原理与第一相同只是加密方式不同。
Sha1Rsa 有一对公钥和私钥,私钥代理商自己保存,公钥上传到电子商务公司。下面是一段Sha1Rsa 加密的 vb.net 代码:
Imports System.Data.SqlClient
Imports System.Data
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Security.Cryptography
ThisPrivateKey = "<RSAKeyValue><Modulus>zDDYKHQ2sxKDfsfdfdsfrefdsfsdg1mr3Ql4EOd113pX1+e18NNrKtm1kdNQRUdmIHZjewFe2Yyz4QBuKbQJN0nBdb3mf8w8jbZEVChaQiuBRQfb9I9GK0Y4K/wWg35Pm2Bbqp3GxNEsy8tyrANWwop3Om+hb5k=</Modulus><Exponent>AQAB</Exponent><P>++EGyw88d1Q2U+DMfEKVvio+l22tAMptfhraODpV74xOjGM5C6jD9ObusTMqk+zjuy44mvopsfw==</P><Q>z4gUcuwUte6aZbXtcNhieCN1wG42x4xJNHeiwLgAX1zJ+JhvwTcj54Y/i9OquyQw89g+yGZ5YKvy7D5YpHX35w==</Q><DP>hHG+HbZkSCb67j4tqEVm8fjKstuT9e97jM3oE6tghvZvGUD3NMJ6vhR6NiDESNG5dvm9Px/rgsJcJqMX0md9Rw==</DP><DQ>zYVP6veNExb2ZF+kgypnad6EEEuViEyPepw3227dP5NemQgtNEVtEy3J5Kl73NTcfb/bfQ6uiWP/sKGVm1kQZQ==</DQ><InverseQ>sXxj3ZgyhraODpV74xOjGM5C6jD9Obc9zjhs6cPRFtV2whM1DZjOhraODpV74xOjGM5C6jD9ObVGj1jad5e1pHXQ==</InverseQ><D>t45JIsSlz4CrgIPcBBgwte9tUTdV6HazBoFzcUd/pZBcwQ0cFAYelx/yC7LOiblko1amtHqDFSDTEFDsfsdfmfXN/IqqHd9PrBhkIqHKsTRKe31hCL7XJphLEKHjhwo0GNSGDqWokmxhmUmzz73P1jj7mRpSiLNOk=</D></RSAKeyValue>"
‘将 String 转换为 Byte()
Function Convert2ByteArray(ByVal strInput As String, ByRef flag As Boolean) As Byte()
Dim intCounter As Integer
Dim arrChar As Char()
arrChar = strInput.ToCharArray()
Dim arrByte(arrChar.Length - 1) As Byte
Try
For intCounter = 0 To arrByte.Length - 1
arrByte(intCounter) = Convert.ToByte(arrChar(intCounter))
Next
flag = True
Catch ex As Exception
flag = False
End Try
Return arrByte
End Function
Dim signature As String = “id=123456&partner=2088006300000000&account=test@msn.com”
Dim arrInput As Byte()
Dim flag_char As Boolean = True
arrInput = Convert2ByteArray(signature, flag_char)
If flag_char Then
Dim objRSA As RSACryptoServiceProvider
Dim strPrivateKey As String
Dim ByteConverter As New UnicodeEncoding()
objRSA = New RSACryptoServiceProvider
strPrivateKey = ThisPrivateKey
objRSA.FromXmlString(strPrivateKey)
signature = BitConverter.ToString(objRSA.SignData(arrInput, "SHA1"))
signature = System.Web.HttpUtility.UrlEncode(Replace(signature, "-", "").ToLower)
post = “id=123456&partner=2088006300000000&account=test@msn.com” & "&signature=" & signature
url = “http://url/xxx.aspx?” & post
…..
‘将加密后的数据发送到服务器端
End If
三、数字证书,一般银行给电子商务公司提供的都是数字证书型式的。
待续....
- 网上交易加密方式
- 加密方式
- 加密方式
- 电子签名与网上交易
- 网上交易何时征税?
- 股票的网上交易
- 网上交易不得了啊
- 网上交易的守护者-数字证书
- 网上交易的守护者-数字签名
- 加密方式-对称加密(AES)
- 无线网络加密方式
- 。net的加密方式
- ucenter 用户加密方式
- MemberShip加密处理方式
- Discuz密码加密方式
- DES 加密,解密方式
- C# 常用加密方式
- 数据加密资源方式
- 百度的搜索排名原则
- Java性能优化技巧集锦
- 什么是网络爬虫程序?
- 搜索引擎技术核心揭密
- 中文搜索引擎技术揭密
- 网上交易加密方式
- Windows Mobile 开发系列文章收藏 - Windows Mobile 6.x
- Action Script基础学习
- 搜索引擎未来10年发展方向
- ActionScript3.0 中XML与XMLList详解
- 搜索引擎为什么抵制SEO?
- 搜索引擎三条定律
- ActionScript3.0 与服务器通信相关的类
- 搜索引擎优化常见问题