-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-2-一.电子商务支付概述·名词解释名称说明EDI电子数据交换,是将业务文件按一个公认的标准从一台计算机传输到另一台计算机的电子传输方法,由于EDI在商务活动中大大减少了纸张票据的使用,通常也被称为“无纸贸易”或“无纸交易”。SETSecureElectronicTransaction,安全电子交易协议。是由MasterCard和Visa联合Netscape,Microsoft等公司,于1997年6月1日推出的一种新的电子支付模型SSL安全套接层协议,它是网景(Netscape)公司提出的基于WEB应用的安全协议,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证CA认证机构负责颁发证书,认证身份有效性的权威机构DESDataEncryptionStandard,一种对称加密算法。即加解密双方在加解密过程中要使用完全相同的一个密钥RSA一种非对称加密算法。所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密消息摘要消息摘要是一种与消息认证码结合使用以确保消息完整性的技术,目前广泛使用的算法有MD4、MD5、SHA-1PKIPKI(PublicKeyInfrastructure)即公钥基础设施·电子商务支付方式类型1.电子数据交换(EDI)通过国际统一的EDIFACT标准或者/ansi.X.12标准来格式化报文,以实现交易双方数据的准确性和可靠性,一般通过专有传输网络作为交易通道(VPN等)。2.网银支付一般为在互联网中通过数据的加密签名,身份认证系统等方式来实现交易数据的传输。3.手机支付与网银支付类似。4.电子钱包一种虚拟帐户,可以实现货币的转帐与支付功能5.电子货币一种虚拟货币。根据各个电子商务系统的定义不同功能也就不同。6.线下汇款通过邮局或者银行汇款方式在实现交易。-3-7.货到付款在电子商务系统中下单,客户收到商品后再付款。·电子商务支付安全基本要求信息保密性(RSA/DES)信息完整性(摘要)交易者身份真实性(证书)不可抵赖性(签名)系统的可靠性(SET/SSL)-4-二.网银支付·网银支付流程提交订单商户接收订单订单入库订单数据加密,签名签名验证转到银行支付页面银行错误提示提交银行卡信息扣款是否成功错误提示成功提示转向商户页面支付证书验证错误提示-5-·网银支付数据加密与签名加密技术:1)DES对称加密技术DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,JAVA代码实现:importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjava.security.Key;importjava.security.SecureRandom;/***此例子是对一个字符串信息,用一个私钥(key)加密,然后在用该私钥解密,验证是否一致*私钥加密,是对称加密*/publicclassPrivateKey{publicstaticvoidmain(String[]args)throwsException{Stringbefore=123456;byte[]plainText=before.getBytes(UTF8);//得到一个使用AES算法的KeyGenerator的实例KeyGeneratorkeyGen=KeyGenerator.getInstance(AES);SecureRandomrandom=newSecureRandom();keyGen.init(128,random);//通过KeyGenerator产生一个key(密钥算法刚才已定义,为AES)Keykey=keyGen.generateKey();System.out.println(FinishgeneratingAESkey==+key);//获得一个私钥加密类Cipher,定义Cipher的基本信息:ECB是加密方式,PKCS5Padding是填充方法Ciphercipher=Cipher.getInstance(AES/ECB/PKCS5Padding);//使用私钥加密System.out.println(\n用私钥加密...);//把刚才生成的key当作参数,初始化使用刚才获得的私钥加密类,Cipher.ENCRYPT_MODE意思是加密cipher.init(Cipher.ENCRYPT_MODE,key);//私钥加密类Cipher进行加密,加密后返回一个字节流byte[]-6-byte[]cipherText=cipher.doFinal(plainText);//以UTF8格式把字节流转化为StringStringafter1=newString(cipherText,UTF8);System.out.println(用私钥加密完成:+after1);//使用私钥对刚才加密的信息进行解密,看看是否一致,Cipher.DECRYPT_MODE意思是解密钥System.out.println(\n用私钥解密...);cipher.init(Cipher.DECRYPT_MODE,key);//对刚才私钥加密的字节流进行解密,解密后返回一个字节流byte[]byte[]newPlainText=cipher.doFinal(cipherText);Stringafter2=newString(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将这个消息发给B(已经用B的公钥加密消息)。5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。JAVA代码实现:importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjavax.crypto.Cipher;/**此例子是一个公钥加密例子,Cipher类使用KeyPairGenerator(顾名思义:一对钥匙生成*器)生成的公钥和私钥*/publicclassPublicKey{publicstaticvoidmain(String[]args)throwsException{-7-Stringbefore=asdf;byte[]plainText=before.getBytes(UTF8);//产生一个RSA密钥生成器KeyPairGenerator(顾名思义:一对钥匙生成器)KeyPairGeneratorkeyGen=KeyPairGenerator.getInstance(RSA);//定义密钥长度1024位keyGen.initialize(1024);//通过KeyPairGenerator产生密钥,注意:这里的key是一对钥匙!!KeyPairkey=keyGen.generateKeyPair();//获得一个RSA的Cipher类,使用公钥加密Ciphercipher=Cipher.getInstance(RSA/ECB/PKCS1Padding);System.out.println(\n用公钥加密...);cipher.init(Cipher.ENCRYPT_MODE,key.getPublic());//用公钥进行加密,返回一个字节流byte[]cipherText=cipher.doFinal(plainText);//以UTF8格式把字节流转化为StringStringafter1=newString(cipherText,UTF8);System.out.println(用公钥加密完成:+after1);//使用私钥解密System.out.println(\n用私钥解密...);//Cipher.DECRYPT_MODE意思是解密,从一对钥匙中得到私钥key.getPrivate()cipher.init(Cipher.DECRYPT_MODE,key.getPrivate());//用私钥进行解密,返回一个字节流byte[]newPlainText=cipher.doFinal(cipherText);Stringafter2=newString(newPlainText,UTF8);System.out.println(用私钥解密完成:+after2);}}·消息摘要消息摘要(MessageDigest)又称为数字摘要(DigitalDigest)。它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数