电子商务实现电子支付

上传人:痛*** 文档编号:172182457 上传时间:2022-12-01 格式:DOC 页数:19 大小:544KB
收藏 版权申诉 举报 下载
电子商务实现电子支付_第1页
第1页 / 共19页
电子商务实现电子支付_第2页
第2页 / 共19页
电子商务实现电子支付_第3页
第3页 / 共19页
资源描述:

《电子商务实现电子支付》由会员分享,可在线阅读,更多相关《电子商务实现电子支付(19页珍藏版)》请在装配图网上搜索。

1、在线支付技术总结目 录一电子商务支付概述3名词解释3电子商务支付方式类型3电子商务支付安全基本要求4二网银支付5网银支付流程5网银支付数据加密与签名61)DES对称加密技术62)工作原理73)消息摘要84)数字签名95)数字证书126)PKI体系(公钥基础设施体系)157)目前国内的CA认证机构158)安全的通信协议169)第三方支付平台17三邮乐中国网银支付181)功能描述182)数据库结构193)时序图194)后台主类图19一电子商务支付概述名词解释名 称说 明EDI电子数据交换,是将业务文件按一个公认的标准从一台计算机传输到另一台计算机的电子传输方法,由于EDI在商务活动中大大减少了纸张

2、票据的使用,通常也被称为“无纸贸易”或“无纸交易”。SETSecure Electronic Transaction ,安全电子交易协议。是由Master Card和Visa联合Netscape,Microsoft等公司,于1997年6月1日推出的一种新的电子支付模型SSL安全套接层协议,它是网景( Netscape )公司提出的基于 WEB 应用的安全协议,它为 TCP/IP 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证CA认证机构负责颁发证书,认证身份有效性的权威机构DESData Encryption Standard ,一种对称加密算法。即加解密双方在加解密过程中要使用

3、完全相同的一个密钥RSA一种非对称加密算法。所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密消息摘要消息摘要是一种与消息认证码结合使用以确保消息完整性的技术,目前广泛使用的算法有MD4、MD5、SHA-1 PKIPKI(Public Key Infrastructure ) 即公钥基础设施 电子商务支付方式类型1电子数据交换(EDI)通过国际统一的EDIFACT标准或者/ansi.X.12标准来格式化报文,以实现交易双方数据的准确性和可靠性,一般通过专有传输网络作为交易通道(VPN等)。2网银支付一般为在互联网中通过数据的加密签名,身份认证系统等方式来实现交易数据

4、的传输。3手机支付与网银支付类似。4电子钱包一种虚拟帐户,可以实现货币的转帐与支付功能5电子货币一种虚拟货币。根据各个电子商务系统的定义不同功能也就不同。6线下汇款通过邮局或者银行汇款方式在实现交易。7货到付款在电子商务系统中下单,客户收到商品后再付款。电子商务支付安全基本要求l 信息保密性(RSA/DES)l 信息完整性(摘要)l 交易者身份真实性(证书)l 不可抵赖性(签名)l 系统的可靠性(SET/SSL)二网银支付网银支付流程提交订单商户接收订单订单入库订单数据加密,签名签名验证转到银行支付页面银行错误提示提交银行卡信息扣款是否成功错误提示成功提示转向商户页面支付证书验证错误提示网银支

5、付数据加密与签名加密技术:1)DES 对称加密技术DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,JAVA 代码实现:import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.Key; import java.security.SecureRandom;/* * 此例子是对一个字符串信息,用一个私钥(key)加密,然后在用该私钥解密,验证是否一致 * 私钥加密,是对称加密 */ public class PrivateKey public static void main

6、(String args) throws Exception String before = ; byte plainText = before.getBytes(UTF8); /得到一个使用AES算法的KeyGenerator的实例 KeyGenerator keyGen = KeyGenerator.getInstance(AES); SecureRandom random=new SecureRandom(); keyGen.init(128, random); /通过KeyGenerator产生一个key(密钥算法刚才已定义,为AES) Key key = keyGen.generat

7、eKey(); System.out.println(Finish generating AES key=+key); /获得一个私钥加密类Cipher,定义Cipher的基本信息:ECB是加密方式,PKCS5Padding是填充方法 Cipher cipher = Cipher.getInstance(AES/ECB/PKCS5Padding); /使用私钥加密 System.out.println(n用私钥加密.); /把刚才生成的key当作参数,初始化使用刚才获得的私钥加密类,Cipher.ENCRYPT_MODE意思是加密 cipher.init(Cipher.ENCRYPT_MODE

8、, key); /私钥加密类Cipher进行加密,加密后返回一个字节流byte byte cipherText = cipher.doFinal(plainText); /以UTF8格式把字节流转化为String String after1 = new String(cipherText, UTF8); System.out.println(用私钥加密完成:+after1); /使用私钥对刚才加密的信息进行解密,看看是否一致,Cipher.DECRYPT_MODE意思是解密钥 System.out.println(n用私钥解密.); cipher.init(Cipher.DECRYPT_MOD

9、E, key); /对刚才私钥加密的字节流进行解密,解密后返回一个字节流byte byte newPlainText = cipher.doFinal(cipherText); String after2 = new String(newPlainText, UTF8); System.out.println(用私钥解密完成:+after2); 2)RSA 非对称加密技术工作原理1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。4.A将这个消息发给

10、B(已经用B的公钥加密消息)。5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。JAVA 代码实现: import java.security.KeyPair; import java.security.KeyPairGenerator; import javax.crypto.Cipher; /* 此例子是一个公钥加密例子,Cipher类使用KeyPairGenerator(顾名思义:一对钥匙生成*器)生成的公钥和私钥 */ public class PublicKey public static void main(String

11、args) throws Exception String before = asdf; byte plainText = before.getBytes(UTF8); /产生一个RSA密钥生成器KeyPairGenerator(顾名思义:一对钥匙生成器) KeyPairGenerator keyGen = KeyPairGenerator.getInstance(RSA); /定义密钥长度1024位 keyGen.initialize(1024); /通过KeyPairGenerator产生密钥,注意:这里的key是一对钥匙! KeyPair key = keyGen.generateKey

12、Pair(); /获得一个RSA的Cipher类,使用公钥加密 Cipher cipher = Cipher.getInstance(RSA/ECB/PKCS1Padding); System.out.println(n用公钥加密.); cipher.init(Cipher.ENCRYPT_MODE, key.getPublic(); /用公钥进行加密,返回一个字节流 byte cipherText = cipher.doFinal(plainText); /以UTF8格式把字节流转化为String String after1 = new String(cipherText, UTF8); S

13、ystem.out.println(用公钥加密完成:+after1); /使用私钥解密 System.out.println(n用私钥解密.); /Cipher.DECRYPT_MODE意思是解密,从一对钥匙中得到私钥 key.getPrivate() cipher.init(Cipher.DECRYPT_MODE, key.getPrivate(); /用私钥进行解密,返回一个字节流 byte newPlainText = cipher.doFinal(cipherText); String after2 = new String(newPlainText, UTF8); System.ou

14、t.println(用私钥解密完成:+after2); 消息摘要消息摘要(Message Digest)又称为数字摘要(Digital Digest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。 消息摘要采用单向Hash 函数将需加密的明文摘要成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。这样这

15、摘要便可成为验证明文是否是真身的指纹了。 JAVA 代码实现: import java.security.MessageDigest; /* * 消息摘要是一种与消息认证码结合使用以确保消息完整性的技术 * 目前广泛使用的算法有MD4、MD5、SHA-1 * 注意:消息摘要是单向的*/ public class MessageDigestExample public static void main(String args) throws Exception String beforeDegist = 2312; System.out.println(摘要前:+beforeDegist); /

16、初始信息要转换成字节流的形式 byte plainText = beforeDegist.getBytes(utf8); MessageDigest messageDigest = MessageDigest.getInstance(MD5); System.out.println(n + messageDigest.getProvider().getInfo(); messageDigest.update(plainText); String afterDegist = new String(messageDigest.digest(),utf8); System.out.println(摘

17、要后:+afterDegist); 数字签名数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。数字签名是个加密的过程,数字签名验证是个解密的过程。 JAVA代码实现 import java.security.Signature; import java.security.KeyPairGenerator; import java.security

18、.KeyPair; import java.security.SignatureException; /*此例子是数字签名的例子,使用RSA私钥对消息摘要(这里指的是原始数据)进行签名,然后使用公钥验证签名 * A通过使用B的公钥加密数据后发给B,B利用B的私钥解密就得到了需要的数据(进过B公钥加密的数据只有B的私钥能够 * 解开,C没有B的私钥,所以C解不开,但C可以使用B的公钥加密一份数据发给B,这样一来,问题来了,B收到的数据到 * 底是A发过来的还是C发过来的呢) * 由于私钥是唯一的,那么A就可以利用A自己的私钥进行加密,然后B再利用A的公钥来解密,就可以确定:一定是A的消息,数字签

19、名的原理就基于此 * 总结:A想将目标数据传给B,此时A需要准备1和2两部分 * 1:A使用B的公钥将原始信息加密,以起到保密作用(只有B的私钥能解开,其他人使用其他钥匙都解不开,当然就保密咯) * 2:A使用A的私钥将原始信息的摘要进行签名,以起到接收方B确定是A发过来的作用(A用A的私钥对目标数据的摘要进行签 * 名,然后传给B,同时,C用C的私钥对任意信息进行签名也传给B,B想接受的是A的数据(比如说一个转帐请求),于是B * 就通过A的公钥对接受到的两个信息进行解密,解开的就是A(A的公钥能且只能解开A的私钥加密的数据) */ public class DigitalSignature

20、 public static void main(String args) throws Exception String before = asdf; byte plainText = before.getBytes(UTF8); /形成RSA公钥对 KeyPairGenerator keyGen = KeyPairGenerator.getInstance(RSA); keyGen.initialize(1024); KeyPair key = keyGen.generateKeyPair(); /使用私钥签名 Signature sig = Signature.getInstance(S

21、HA1WithRSA); sig.initSign(key.getPrivate();/sig对象得到私钥 /签名对象得到原始数据 sig.update(plainText);/sig对象得到原始数据(现实中用的是原始数据的摘要,摘要的是单向的,即摘要算法后无法解密) byte signature = sig.sign();/sig对象用私钥对原始数据进行签名,签名后得到签名signature String after1 = new String(signature, UTF8); System.out.println(n用私钥签名后:+after1); /使用公钥验证 sig.initVer

22、ify(key.getPublic();/sig对象得到公钥 /签名对象得到原始信息 sig.update(plainText);/sig对象得到原始数据(现实中是摘要) try if (sig.verify(signature) /sig对象用公钥解密签名signature得到原始数据(即摘要),一致则true System.out.println(签名验证正确!); else System.out.println(签名验证失败!); catch (SignatureException e) System.out.println(签名验证失败!); 5数字证书数字证书是一种权威性的电子文档,

23、由权威公正的第三方机构,即CA中心签发的证书。它以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性。 使用了数字证书,即使您发送的信息在网上被他人截获,甚至您丢失了个人的账户、密码等信息,仍可以保证您的账户、资金安全。 它能提供在Internet上进行身份验证的一种权威性电子文档,人们可以在互联网交往中用它来证明自己的身份和识别对方的身份。当然在数字证书认证的过程中证书认证中心(CA)作为权威的、公正的、可信赖的第三方,其作用是至关重要的.如何判断数字认证中心公正第三方的地位是权威可信的,国家工业和信息化部以资质合规的方式,陆续

24、向天威诚信数字认证中心等30家相关机构颁发了从业资质 JDK提供的数字证书生成工具: 1). Keytool 命令工具 Java提供相对简单的被称为keytool的命令行工具,可以简单地产生“自己签名”的证书。自己签名的证书只是用户产生的证书,没有正式在大家所熟知的认证权威那里注册过,因此不能确保它的真实性。但却能保证数据传输的安全性。 2)利用keytool 创建自己的证书 1建立证书库(密钥库) 在c盘目录下创建一个证书,指定证书库为BocsoftKeyLib,创建别名为TestCertification的一条证书,它指定用 RSA 算法生成,且指定密钥长度为1024,证书有效期为1年 将

25、证书导出到证书文件TC.cer 导出的证书文件无法用文本编辑器正确显示,可以输入如下命令,然后在以记形式打开TC.cer就能看了 X.509证书结构版本号.证书的版本标识符(例如,版本3)序列号 .标识证书的唯一整数签名.用于签证书的算法标识颁发者 .证书颁发者的唯一识别名有效期 .证书有效时间段主体.证书拥有者的唯一识别名主体公钥信息 .证书拥有者的公钥(和算法标识符)颁发者唯一标识符.颁发者的可选唯一标识符主体唯一标识符 .主体的唯一识别符扩展部分 .可选的扩展JAVA 代码读取证书信息 import java.security.*; import java.security.Public

26、Key; import java.io.*; import java.util.*; import java.security.cert.*; import java.security.cert.Certificate; import java.security.cert.CertificateFactory; public class DigitalCertificate public static void main(String args) try String pass=; FileInputStream in2=new FileInputStream(C:/BocsoftKeyLib

27、); KeyStore ks=KeyStore.getInstance(JKS); ks.load(in2,pass.toCharArray(); String alias = TestCertification3; /alias为条目的别名 Certificate c=ks.getCertificate(alias); /获取获取X509Certificate类型的对象,这是证书类获取Certificate的子类,实现了更多方法 X509Certificate t=(X509Certificate)c; System.out.println(版本号:+t.getVersion(); Syst

28、em.out.println(序列号:+t.getSerialNumber().toString(); System.out.println(主体名:+t.getSubjectDN(); System.out.println(签发者:+t.getIssuerDN(); System.out.println(有效期:+t.getNotBefore(); System.out.println(签名算法:+t.getSigAlgName(); byte sig=t.getSignature();/签名值 PublicKey pk = t.getPublicKey(); byte pkenc=pk.g

29、etEncoded(); System.out.println(公钥:); for(int i=0;i:+CA509.getVersion(); System.out.println(CA-cert_2d59.crt 序列号:+CA509.getSerialNumber().toString(); System.out.println(CA-cert_2d59.crt 签名算法:+CA509.getSigAlgName(); System.out.println(CA-cert_2d59.crt 签发者:+CA509.getIssuerDN(); PublicKey pk2 = CA509.g

30、etPublicKey(); byte pkenc2=pk2.getEncoded(); System.out.print(CA-cert_2d59.crt 公钥:); for(int i=0;ipkenc2.length;i+) System.out.print(pkenc2i+,); c.verify(pbk); catch(CertificateExpiredException e)/证书的日期有效性检查:过期 System.out.println(证书的日期有效性检查:过期); catch(CertificateNotYetValidException e) /证书的日期有效性检查:尚

31、未生效 System.out.println(证书的日期有效性检查:尚未生效); catch (CertificateException ce) ce.printStackTrace(); catch (FileNotFoundException fe) fe.printStackTrace(); catch (Exception e) e.printStackTrace(); PKI体系 (公钥基础设施体系) 数字证书 认证中心 注册机构 PKI策略硬件系统 发布系统 PKI(Public Key Infrastructure ) 即公钥基础设施,是一种遵循既定标准的密钥管理平台,它能够为所

32、有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。完整的PKI体系必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。1 目前国内的CA认证机构山东省数字证书认证管理有限公司 银联金融认证中心有限公司 北京天威诚信电子商务服务有限公司 陕西省数字证书认证中心有限责任公司 国投安信数字证书认证有限公司 广东省电子商务认证有限公司 广东数字证书认证中心有

33、限公司 上海市数字证书认证中心有限公司 北京数字证书认证中心有限公司 辽宁数字证书认证管理有限公司 湖北省数字证书认证管理中心有限公司 颐信科技有限公司 江苏省电子商务证书认证中心有限责任公司 重庆市数字证书认证中心有限公司 浙江省数字安全证书管理有限公司 福建省数字安全证书管理有限公司 新疆数字证书认证中心(有限公司)各个银行的认证中心各个省分的认证中心 安全的通信协议1) SET协议: 为了实现更加完善的即时电子支付,SET协议应运而生。SET协议(Secure Electronic Transaction),被称之为安全电子交易协议,是由Master Card和Visa联合Netscap

34、e,Microsoft等公司,于1997年6月1日推出的一种新的电子支付模型。SET协议是B2C上基于信用卡支付模式而设计的,它保证了开放网络上使用信用卡进行在线购物的安全。SET主要是为了解决用户,商家,银行之间通过信用卡的交易而设计的,它具有的保证交易数据的完整性,交易的不可抵赖性等种种优点,因此它成为目前公认的信用卡网上交易的国际标准。 SET协议的重点就是确保商家和客户的身份认证和交易行为的不可否认性。其理论基础就是不可否认机制,采用的核心技术包括X.509电子证书标准,数字签名,报文摘要,双重签名等技术。2) SSL协议和HTTPS协议:(一) SSL协议(Secure Socket

35、 Layer,安全套接层)主要是使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,常用Web Server方式。 由于SSL没有提供数字签名的功能,因此一直是SSL的一大缺陷。后来由美国MASTERCARD和Visa 信用卡组织制定了SET协议。 (二) JAVA与SSL协议实现-JSSE。JSSE(Java Security Socket Extension,Java安全套接字扩展)是Sun为了解决在Internet上的安全通讯而推出的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密

36、,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,开发人员可以在客户机和服务器之间通过TCP/IP协议安全地传输数据。(三) HTTS协议HTTPS协议可以简单理解为在HTTP协议之上建立SSL通信,并且使用443端口来与TCP/IP进行信息传递。因此,HTTPS协议是建立在HTTP和SSL之上的一个通信协议。 9第三方支付平台1) 支付宝2) 快钱信息3) 易宝支4ED84) UMPAY 三邮乐中国网银支付 1邮乐中国网银下单支付流程 2邮乐中国网银支付结构 1) 功能描述 1借助第三方支付平台实现网银支付的功能 2实现多个第三方支付平台切换的功能 2). 数据库结构 1Paym

37、ent 支付记录表 2Order_Common_Data 网关信息设置 具体表结构请参见: https:/svn.rad.tomonline-checkoutnew/escrow/doc/ORDER.phase21.doc 5)时序图 1 前台时序图:ULE创建订单后接下来进入支付流程。支付流程主要由BuyerSelectOrderPayAction 和 BuyerOrderPostPayAction 以及 来负责。 :第三方支付平台扣款后请求ULE的ACTION不同网关的具体实现不同 :第三方支付平台在接到了notify后再次请求ULE。 2后台主类图:当前台在调用BuyerOrderPostPayAction的selectOrderBank()方法时,该方法会调用后台接口ctocOrderService.buyerPartPayForItemByBank()方法,返回一系列请求网关的参数(HashTable类型)。后台的主要作用是根据订单信息和银行ID到网关策略表中确定第三方支付网关接口,签名值和请求参数,返回给前台ACTION。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!