【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

一)概述 什么是互联网支付? 当支付遇到互联网,一场革命自然不可避免。成为现实的是传统的现金支付已经“退居二线”,各种在线支付方式成为人们日常消费的主要支付方式。银行推出的网银以及第三方支付公司推出的各种各样的支付平台大大方便了人们的生活,互联网支付终端也从桌面电脑扩展到移动终端和电视等多种形式的终端上,互联网支付变得无处不在。终端是支付工具,互联网是载体,支付终端除了目前常见的POS机,智能手机、智能电视、平板电脑、PC机等都是越来越普遍的支付终端。 什么是密码学? 现代密码学研究信息从发端到收端的安全传输和安全存储,是研究“知己知彼”的一门科学。其核心是密码编码学和密码分析学。前者致力于建立难以被敌方或对手攻破的安全密码体制,即“知己”;后者则力图破译敌方或对手已有的密码体制,即“知彼”。编码密码学主要致力于信息加密、信息认证、数字签名和密钥管理方面的研究。信息加密的目的在于将可读信息转变为无法识别的内容,使得截获这些信息的人无法阅读,同时信息的接收人能够验证接收到的信息是否被敌方篡改或替换过;数字签名就是信息的接收人能够确定接收到的信息是否确实是由所希望的发信人发出的;密钥管理是信息加密中最难的部分,因为信息加密的安全性在于密钥。历史上,各国军事情报机构在猎取别国的密钥管理方法上要比破译加密算法成功得多。 二)互联网支付的安全隐患

网络支付系统的不稳定(中断);

隐私支付信息(比如:卡号、有效期、CVV2以及身份信息,比如:身份证号码、手机号码等)在网络传输过程中被窃取或盗用(窃取/截取);

支付信息被篡改(篡改);

信息假冒:冒充他人身份,发送假冒信息(伪造/捏造);

否认已经做过的交易(比如:在A平台或A银行做的交易结果收到的交易确认信息却是B平台或B银行发来的)。

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

三)互联网支付的安全需求

1、支付的可靠性;

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

2、支付的真实性;

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

3、支付的机密性;

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

4、支付的完整性;

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

5、支付的不可抵赖性。

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

四)互联网支付数据机密性技术

1、对称加密算法:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。

【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

典型的对称加密算法如下:

1.1、AES:(Advanced Encryption Standard)高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准;

一个用.NET实现的AES加密代码:

1 /// <summary> 2 /// 有密码的AES加密 3 /// </summary> 4 internal static string AesEncrypt(string toEncrypt) 5 { 6 var keyArray = ConvertBinaryToByte(ConvertStringToBinary(Md5Hex(Configs.PartnerKey))); 7 var toEncryptArray = Encoding.GetEncoding(Consts.Charset).GetBytes(toEncrypt); 8 using (var acsp = new AesCryptoServiceProvider {KeySize = 128, BlockSize = 128}) 9 { 10 acsp.GenerateIV(); 11 using (var aes = new AesCryptoServiceProvider {Key = keyArray, IV = acsp.IV, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7}) 12 { 13 byte[] resultArray; 14 using (var cTransform = aes.CreateEncryptor()) 15 { 16 resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); 17 } 18 return Convert.ToBase64String(resultArray); 19 } 20 } 21 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwjsp.html