网上交易加密方式
2009-08-08 00:05
295 查看
随着网上电子商务发展,网上支付日益普及。各机构互相之间的接口也日益增多,如电子商务公司与银行之间的支付接口;电子商务公司与下级代理商之间的支付接口等等。下面我介绍几种常用的支付接口的加密方式。
一、最常用最简单的加密方式是支付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
三、数字证书,一般银行给电子商务公司提供的都是数字证书型式的。
待续....
一、最常用最简单的加密方式是支付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
三、数字证书,一般银行给电子商务公司提供的都是数字证书型式的。
待续....
相关文章推荐
- 可靠性测试saving通信机,加密方式从硬加密变成了软加密而不能和主机的硬加密进行匹配,不能进行交易
- 比特币 区块链 几种交易标准详解 P2PKH、P2PK、MS、P2SH加密方式
- 整理网上两种OPENSSL RSA加密解密方式总结
- 比特币 区块链 几种交易标准详解 P2PKH、P2PK、MS、P2SH加密方式
- Linux下ssh加密方式的远程连接
- 蓝牙加密二【配对和绑定的关系和定义】【IO Capabilities】【sec_params.rsp_key】【BOND MODE】【加密方式】【Encryption Procedur】【计算MIC】
- Discuz密码 加密方式
- 外汇交易方式简介
- .NET 与 Java 互通的 DES 加密方式
- 密码2-加密模式和填充方式
- java常用加密方式代码实现
- 开发过程中主要的三种加密方式
- 如何有效防止“蹭网”——简述Wi-Fi加密方式与破解
- 网上交易"漏税"近10亿 商务部要指导意见
- 换一种方式做加密—著名程序员刘涛涛谈扭曲加密变换技术
- Cognos权限认证CJP方式之用户密码加密
- php连接mysql 的错误:用户密码使用了旧版本的加密方式
- iOS 中的加密方式
- 操作系统,网上课件+IO实现四种方式。
- 互联网上最大的盗链黑洞-揭秘迅雷的下载方式[转载]