论文部分内容阅读
[摘 要] .NET中有多种可用的加密和解密算法。支持对称密钥算法和非对称密钥算法,支持对常规算法的缺省实现,用户也可以自定义加密和解密算法。本文重点讨论如何运用.NET进行加密和解密。
[关键词] .NET 加密 解密
一、引言
电子商务在当今世界已经被广泛应用,其在技术方面的核心问题是信息的保密性、完整性和不可否认性。加密技术是电子商务采取的主要的安全措施。.NET中有多种可用的加密和解密算法。支持对称密钥算法和非对称密钥算法,支持对常规算法的缺省实现,用户也可以自定义加密和解密算法。本文重点讨论如何运用.NET进行加密和解密。
二、加密和解密的算法
加密和解密的算法分为对称算法和不对称算法。对称算法在加密和解密数据时使用相同的密钥和初始化矢量,典型的有DES、TripleDES和Rijndael算法,主要用于本地文档或数据的加密。不对称算法有两个不同的密钥,分别是公共密钥和私有密钥,公共密钥在网络中传递,用于加密数据,而私有密钥用于解密数据。不对称算法主要有RSA、DSA等,主要用于网络数据的加密。
三、加密和解密本地文档
采用对称密钥算法,首先获取服务提供者的特定实例,创建一个用于加密的新的随机密钥和初始化向量IV。密钥的大小取决于用来加密的特定提供程序。IV将帮助算法生成最终加密字符串的数据块。IV用于开始第一个块的加密。如果不提供IV,那么只要密钥相同,在字符串之间传递的通用数据将保持同一种模式。因此,需要使用IV作为加密数据的“随机”组件。通过这种方式,只要使用的IV不同,即使密钥相同,同一个数据也会被加密成完全不同的值。下面以DES加密算法演示加密和解密的过程:
1.数据加密
public byte[] Encrypt(byte[] bytesData,outbyte[] bytesKey,outbyte[] bytesIV){
MemoryStream Data1 = new MemoryStream();
SymmetricAlgorithm sa=new DESCryptoServiceProvider();
ICryptoTransform transform =sa.CreateEncryptor();
CryptoStream encStream =newCryptoStream(Data1,transform,CryptoStreamMode.Write);
encStream.Write(bytesData, 0, bytesData.Length);
encStream.FlushFinalBlock();
encStream.Close();
bytesKey = sa.Key;
bytesIV = sa.IV;
return Data1.ToArray();}
2.数据解密
public byte[] Decrypt(byte[] bytesData, byte[] bytesKey,byte[] bytesIV){
MemoryStream Data2 = new MemoryStream();
SymmetricAlgorithm sa=new DESCryptoServiceProvider();
ICryptoTransform transform = sa.CreateDecryptor(bytesKey,bytesIV);
CryptoStream decStream =newCryptoStream(Data2,transform,CryptoStreamMode.Write);
decStream.Write(bytesData,0,bytesData.Length);
decStream.FlushFinalBlock();
decStream.Close();
return Data2.ToArray();}
四、网络数据加密和解密
非对称算法就是一种解决方案。不对称加密算法(也称作公钥算法) 要求发送方和接收方共同维护一对相关的密钥:私钥和公钥。两个密钥对实体来说都是惟一的。公钥可由任何人使用; 该密钥用于对发送给接收方的数据进行加密。私钥必须由接收方保持私有;该密钥用于对使用接收方的公钥编码的消息进行解密。这类算法使用的两个密钥有如下关系:使用公共密钥加密的信息只能被相应的私有密钥解密。
不对称算法比对称算法计算的花费多、速度慢。因此在线对话中使用不对称算法加密对称密钥。实际上安全接口层(SSL)建立服务器和浏览器之间的安全对话使用的就是这种工作方式:
public byte[] RSAEncrypt(byte[] DToe,RSAKeyInfo,bool Tof){
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Encrypt(DToe, Tof);}
public byte[] RSADecrypt(byte[] DTod, RSAKeyInfo,bool Tof) {
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Decrypt(DTod, Tof);}
static string TestRSA(string src){
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dToe = ByteConverter.GetBytes(src);
byte[] eData,dData;
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
eData = RSAEncrypt(dToe,RSA.ExportParameters(false),false);
dData = RSADecrypt(eData,RSA.ExportParameters(true), false);
return ByteConverter.GetString(dData);}
五、結论
在实际用中,电子商务的安全加密系统普遍采用对称加密体制和非对称加密体制相结合的混合加密体制:用对称密码算法来加密或解密大量的数据,而用非对称密码算法来加密关键性的、核心的机密数据(如会话密钥)。这样既发挥了对称密码算法的高速、简便性又充分利用了非对称密码体制密钥管理的方便、安全性,较好地解决了运算速度问题和密钥分配管理问题。
参考文献:
[1]祁 明:电子商务安全与保密[M].北京:高等教育出版社,2001,(7)
[2]邱新建:信息加密技术概论[J].石家庄职业技术学院学报,2004,12(6)
[3]杨波等:基于Rabin加密算法的密钥托管体制[J].西安电子科技大学学报,1999
[关键词] .NET 加密 解密
一、引言
电子商务在当今世界已经被广泛应用,其在技术方面的核心问题是信息的保密性、完整性和不可否认性。加密技术是电子商务采取的主要的安全措施。.NET中有多种可用的加密和解密算法。支持对称密钥算法和非对称密钥算法,支持对常规算法的缺省实现,用户也可以自定义加密和解密算法。本文重点讨论如何运用.NET进行加密和解密。
二、加密和解密的算法
加密和解密的算法分为对称算法和不对称算法。对称算法在加密和解密数据时使用相同的密钥和初始化矢量,典型的有DES、TripleDES和Rijndael算法,主要用于本地文档或数据的加密。不对称算法有两个不同的密钥,分别是公共密钥和私有密钥,公共密钥在网络中传递,用于加密数据,而私有密钥用于解密数据。不对称算法主要有RSA、DSA等,主要用于网络数据的加密。
三、加密和解密本地文档
采用对称密钥算法,首先获取服务提供者的特定实例,创建一个用于加密的新的随机密钥和初始化向量IV。密钥的大小取决于用来加密的特定提供程序。IV将帮助算法生成最终加密字符串的数据块。IV用于开始第一个块的加密。如果不提供IV,那么只要密钥相同,在字符串之间传递的通用数据将保持同一种模式。因此,需要使用IV作为加密数据的“随机”组件。通过这种方式,只要使用的IV不同,即使密钥相同,同一个数据也会被加密成完全不同的值。下面以DES加密算法演示加密和解密的过程:
1.数据加密
public byte[] Encrypt(byte[] bytesData,outbyte[] bytesKey,outbyte[] bytesIV){
MemoryStream Data1 = new MemoryStream();
SymmetricAlgorithm sa=new DESCryptoServiceProvider();
ICryptoTransform transform =sa.CreateEncryptor();
CryptoStream encStream =newCryptoStream(Data1,transform,CryptoStreamMode.Write);
encStream.Write(bytesData, 0, bytesData.Length);
encStream.FlushFinalBlock();
encStream.Close();
bytesKey = sa.Key;
bytesIV = sa.IV;
return Data1.ToArray();}
2.数据解密
public byte[] Decrypt(byte[] bytesData, byte[] bytesKey,byte[] bytesIV){
MemoryStream Data2 = new MemoryStream();
SymmetricAlgorithm sa=new DESCryptoServiceProvider();
ICryptoTransform transform = sa.CreateDecryptor(bytesKey,bytesIV);
CryptoStream decStream =newCryptoStream(Data2,transform,CryptoStreamMode.Write);
decStream.Write(bytesData,0,bytesData.Length);
decStream.FlushFinalBlock();
decStream.Close();
return Data2.ToArray();}
四、网络数据加密和解密
非对称算法就是一种解决方案。不对称加密算法(也称作公钥算法) 要求发送方和接收方共同维护一对相关的密钥:私钥和公钥。两个密钥对实体来说都是惟一的。公钥可由任何人使用; 该密钥用于对发送给接收方的数据进行加密。私钥必须由接收方保持私有;该密钥用于对使用接收方的公钥编码的消息进行解密。这类算法使用的两个密钥有如下关系:使用公共密钥加密的信息只能被相应的私有密钥解密。
不对称算法比对称算法计算的花费多、速度慢。因此在线对话中使用不对称算法加密对称密钥。实际上安全接口层(SSL)建立服务器和浏览器之间的安全对话使用的就是这种工作方式:
public byte[] RSAEncrypt(byte[] DToe,RSAKeyInfo,bool Tof){
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Encrypt(DToe, Tof);}
public byte[] RSADecrypt(byte[] DTod, RSAKeyInfo,bool Tof) {
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
RSA.ImportParameters(RSAKeyInfo);
return RSA.Decrypt(DTod, Tof);}
static string TestRSA(string src){
UnicodeEncoding ByteConverter = new UnicodeEncoding();
byte[] dToe = ByteConverter.GetBytes(src);
byte[] eData,dData;
RSACryptoServiceProvider RSA = new RSACryptoService-Provider();
eData = RSAEncrypt(dToe,RSA.ExportParameters(false),false);
dData = RSADecrypt(eData,RSA.ExportParameters(true), false);
return ByteConverter.GetString(dData);}
五、結论
在实际用中,电子商务的安全加密系统普遍采用对称加密体制和非对称加密体制相结合的混合加密体制:用对称密码算法来加密或解密大量的数据,而用非对称密码算法来加密关键性的、核心的机密数据(如会话密钥)。这样既发挥了对称密码算法的高速、简便性又充分利用了非对称密码体制密钥管理的方便、安全性,较好地解决了运算速度问题和密钥分配管理问题。
参考文献:
[1]祁 明:电子商务安全与保密[M].北京:高等教育出版社,2001,(7)
[2]邱新建:信息加密技术概论[J].石家庄职业技术学院学报,2004,12(6)
[3]杨波等:基于Rabin加密算法的密钥托管体制[J].西安电子科技大学学报,1999