惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
S
SegmentFault 最新的问题
Jina AI
Jina AI
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
WordPress大学
WordPress大学
爱范儿
爱范儿
博客园 - Franky
量子位
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网

博客园 - Hermes.Liu

消息队列、AMQP和RabbitMQ 继SqlPager之后推出一款可用于前台页面的分页控件--UrlPager SqlPager2.0分页控件(使用存储过程,支持.NET2.0) SqlPager最终版[附源码和示例程序](使用存储过程进行分页) SqlPager的再次改进(带数字翻页以及翻页样式设置功能) Asp.net文件的上传与下载 [转]什么是工作分解结构(WBS)? [转]什么是CMMI? 一个继承于DropDownList的树状控件 树型DataGrid的思路 [温故知新]c#的一些基础知识 一个简单的XML的操纵类 IBM DB2数据库使用经验小结 关于showModalDialog 的常见问题 关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在DataTable中实现DataTable.Select("Distinct")功能 常用JavaScript(二) Transact SQL备忘 Microsoft SQLHelper类概述
提供一个基于.NET的加密/解密算法[转.CNSDN.com.cn]
Hermes.Liu · 2006-12-15 · via 博客园 - Hermes.Liu

 提供一个基于.NET SymmetricAlgorithm 类的、带私钥的加密/解密算法的包装类。使用方法: 

 SymmCrypto de = new SymmCrypto(SymmCrypto.SymmProvEnum.DES); 
  Response.Write(x.Decrypting(de.Encrypting(
"ok","yyy"),"yyy")); 
  类的实现C#编码 
   
  
using System; 
  
using System.Security.Cryptography; 
  
using System.IO; 
  
using System.Text; 
   
  
namespace eMeng 
  

   
/// <summary> 
   
/// SymmCrypto 的摘要说明。 
   
/// SymmCrypto类实现.NET框架下的加密和解密服务。 
   
/// 原作者: Frank Fang : fangfrank@hotmail.com 
   
/// </summary> 

   public class SymmCrypto 
   

   
public enum SymmProvEnum : int 
   

   DES, RC2, Rijndael 
   }
 
   
   
private SymmetricAlgorithm mobjCryptoService; 
   
   
/// <remarks> 
   
/// 使用.Net SymmetricAlgorithm 类的构造器. 
   
/// </remarks> 

   public SymmCrypto(SymmProvEnum NetSelected) 
   

   
switch (NetSelected) 
   

   
case SymmProvEnum.DES: 
   mobjCryptoService 
= new DESCryptoServiceProvider(); 
   
break
   
case SymmProvEnum.RC2: 
   mobjCryptoService 
= new RC2CryptoServiceProvider(); 
   
break
   
case SymmProvEnum.Rijndael: 
   mobjCryptoService 
= new RijndaelManaged(); 
   
break
   }
 
   }
 
   
   
/// <remarks> 
   
/// 使用自定义SymmetricAlgorithm类的构造器. 
   
/// </remarks> 

   public SymmCrypto(SymmetricAlgorithm ServiceProvider) 
   

   mobjCryptoService 
= ServiceProvider; 
   }
 
   
   
/// <remarks> 
   
/// Depending on the legal key size limitations of 
   
/// a specific CryptoService provider and length of 
   
/// the private key provided, padding the secret key 
   
/// with space character to meet the legal size of the algorithm. 
   
/// </remarks> 

   private byte[] GetLegalKey(string Key) 
   

   
string sTemp; 
   
if (mobjCryptoService.LegalKeySizes.Length > 0
   

   
int lessSize = 0, moreSize = mobjCryptoService.LegalKeySizes[0].MinSize; 
   
// key sizes are in bits 
   while (Key.Length * 8 > moreSize) 
   

   lessSize 
= moreSize; 
   moreSize 
+= mobjCryptoService.LegalKeySizes[0].SkipSize; 
   }
 
   sTemp 
= Key.PadRight(moreSize / 8' '); 
   }
 
   
else 
   sTemp 
= Key; 
   
   
// convert the secret key to byte array 
   return ASCIIEncoding.ASCII.GetBytes(sTemp); 
   }
 
   
   
public string Encrypting(string Source, string Key) 
   

   
byte[] bytIn = System.Text.ASCIIEncoding.ASCII.GetBytes(Source); 
   
// create a MemoryStream so that the process can be done without I/O files 
   System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
   
   
byte[] bytKey = GetLegalKey(Key); 
   
   
// set the private key 
   mobjCryptoService.Key = bytKey; 
   mobjCryptoService.IV 
= bytKey; 
   
   
// create an Encryptor from the Provider Service instance 
   ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); 
   
   
// create Crypto Stream that transforms a stream using the encryption 
   CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); 
   
   
// write out encrypted content into MemoryStream 
   cs.Write(bytIn, 0, bytIn.Length); 
   cs.FlushFinalBlock(); 
   
   
// get the output and trim the '\0' bytes 
   byte[] bytOut = ms.GetBuffer(); 
   
int i = 0
   
for (i = 0; i < bytOut.Length; i++
   
if (bytOut[i] == 0
   
break
   
   
// convert into Base64 so that the result can be used in xml 
   return System.Convert.ToBase64String(bytOut, 0, i); 
   }
 
   
   
public string Decrypting(string Source, string Key) 
   

   
// convert from Base64 to binary 
   byte[] bytIn = System.Convert.FromBase64String(Source); 
   
// create a MemoryStream with the input 
   System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length); 
   
   
byte[] bytKey = GetLegalKey(Key); 
   
   
// set the private key 
   mobjCryptoService.Key = bytKey; 
   mobjCryptoService.IV 
= bytKey; 
   
   
// create a Decryptor from the Provider Service instance 
   ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); 
   
   
// create Crypto Stream that transforms a stream using the decryption 
   CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); 
   
   
// read out the result from the Crypto Stream 
   System.IO.StreamReader sr = new System.IO.StreamReader( cs ); 
   
return sr.ReadToEnd(); 
   }
 
   }
 
  }
  

Trackback: http://www.cnsdn.com.cn/blog/trackback.asp?tbID=1724