易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 :

C# 设计模式学习一 原则

最近着实忙了一阵子,学习了好多东东都没时间整理,呵呵,总算是要放假了,可以好好归纳归纳了。
设计模式的学习是一个任重而道远的过程了,^_^,要好好总结,总结的目的是让自己好好记住,记住的目的是便于理解,而理解的最终目的是应用,O(∩_∩)O~ 而设计模式也往往是应用的一种重构,循环往复,生生不息啊... ...
变化的部分是不易掌握的,容易掌握的是总则,是不变的部分
一,三大原则
1,针对接口编程,而不是实现编程。
     客户无需知道所使用的对象的特定类型,只需要知道对象拥有客户所期望的接口。
2,优先使用类与对象的组合,而不是类的继承
     继承在某种程度上破坏了封装性,除了很清楚的Is a XX类的关系时用到继承,之外优先使用组合
3,封装变化点
     如果未来有变动,尽量只修改一侧代码(不变动的代码是不存在的,少变动才目的)
4,使用重构得到模式,
     模式是推演出来的,而不是直接用模式去套用,生搬硬套往往得不到我们的预期。
※设计模式并不是技巧
※设计模式是一个重构的过程
二,具体设计原则
1,单一职责原则
  &nb ......

C# 加密-MD5 和 SHA1

在 ASP.NET 中可以非常方便地执行 MD5
或 SHA1 加密。
<%@ Import Namespace="System.Web.Security" %>
FormsAuthentication.HashPasswordForStoringInConfigFile
只需要两步,第一步引入名称空间
(该名称空间也可以省略引用),第二步执行加密函数。
FormsAuthentication.HashPasswordForStoringInConfigFile 有两个参数:第一个参数是要加密的字符串;第二个参数可选值有 MD5
和 SHA1
,表示使用哪种加密方法。返回加密后的字符串,注意,返回后的字符串是大写

示例
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<script runat="server">
    void Enc(object sender, EventArgs e)
    {
        md5Text.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(md5Text.Text, "MD5");
        sha1Text.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(sha1Text.Text, "SHA1");
   ......

C# 加密-散列算法

创建散列码的方法非常多,即使是同一种散列算法也可以通过许多类来实现,前面章节介绍的算一种,下面再介绍一种。以 SHA1
为例:
string plaintext = "明文";
byte[] srcBuffer = System.Text.Encoding.UTF8.GetBytes(plaintext);
HashAlgorithm hash = HashAlgorithm.Create("SHA1"); //将参数换成“MD5”,则执行 MD5 加密。不区分大小写。
byte[] destBuffer = hash.ComputeHash(srcBuffer);
string hashedText = BitConverter.ToString(destBuffer).Replace("-", "");
用的是 HashAlgorithm
这个类,其名称空间是 System.Security.Cryptography
。只用了它的两个方法:Create
和 ComputeHash
,ComputeHash 返回的是 byte[],为了显示这里转换成字符串,转换之后,它和前一节讲的 SHA1 结果是一样的。
也可以用 SHA1Managed
和 SHA1CryptoServiceProvider
,但是我们推荐用本文的方法,因为它不涉及类名,要更改算法,只需要更改 Create 的字符串参数即可。 ......

C# 加密-RSA

RSA
属不对称加密,使用一个公钥一个私钥,公钥可以公开用以加密,私钥严格保密用于解密,RSA 适合于数据量不大的加密,比如加密对称加密的密钥。
RSACryptoServiceProvider
的名称空间是:
System.Security.Cryptography
RSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider();
string plaintext = "明文"; //明文
byte[] ciphertext = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(plaintext), false); //加密后
lbl.Text = Convert.ToBase64String(ciphertext); //显示加密后的,为了显示不可见字符,使用的是 Base64 编码。
使用 RSACryptoServiceProvider() 创建 RSACryptoServiceProvider 实例时,自动产生密钥。 ......

C# 加密-RSA 高级

RSA
实际应用中是:接收方产生公钥和私钥,发送方用其公钥加密,再把加密后的内容发送给接收方。
CspParameters
的名称空间是:
System.Security.Cryptography
CspParameters cpSend = new CspParameters(); //Csp = Cryptography Service Provider
CspParameters cpReceive = new CspParameters();
cpSend.KeyContainerName = "SendTestContainer";
cpReceive.KeyContainerName = "ReceiveTestContainer";
RSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider(cpSend); ;
RSACryptoServiceProvider rsaReceive = new RSACryptoServiceProvider(cpReceive);
rsaSend.fromXmlString(rsaReceive.ToXmlString(false)); //发送方使用接收方给它的公钥进行加密
string plaintext = "前几天我碰到一个朋友,约我跟马贼打架,我立马答应了他,因为我觉得这件事好无聊。";
byte[] ciphertext = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(plaintext), false); //加密后
byte[] decryption = rsaReceive.Decrypt(ciphertext, false); //解密后
lbl.Width = 760;
lbl.Text = "";
lbl.Text += Conve ......

C# 加密-TripleDES

TripleDES
属对称加密,对称加密在加密和解密时都使用相同的密钥,速度快。
TripleDESCryptoServiceProvider 的名称空间是:
System.Security.Cryptography
byte[] plaintextBuffer = System.Text.Encoding.UTF8.GetBytes("明文");
//加密
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
ICryptoTransform transform = tripleDES.CreateEncryptor();
byte[] cipherTextBuffer = transform.TransformFinalBlock(plaintextBuffer, 0, plaintextBuffer.Length);
lbl.Text = Convert.ToBase64String(cipherTextBuffer) + "<br />";
transform.Dispose();
//解密
TripleDESCryptoServiceProvider tripleDES2 = new TripleDESCryptoServiceProvider();
ICryptoTransform transform2 = tripleDES2.CreateDecryptor(tripleDES.Key, tripleDES.IV);
byte[] decryption = transform2.TransformFinalBlock(cipherTextBuffer, 0, cipherTextBuffer.Length);
lbl.Text += System.Text.Encoding.UTF8.GetString(decryption) + "<br />";
transform2.Dispose();
解密时,使用加密的 Key 和 ......
总记录数:40319; 总页数:6720; 每页6 条; 首页 上一页 [4392] [4393] [4394] [4395] 4396 [4397] [4398] [4399] [4400] [4401]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号