电子商务实现电子支付.doc
《电子商务实现电子支付.doc》由会员分享,可在线阅读,更多相关《电子商务实现电子支付.doc(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务 实现 电子 支付
限制150内