您的位置: 首页 - 2007 September
  • 本站大部分内容从网上收集,收集目的仅供研究、学习。涉及版权或不希望收录您的文章请您及时与我联系。
  • 本站IM群,请自行选择。请各位朋友按照自己喜好加入。加入群后请及时发言,防止被清理。谢谢您的合作!!!
  • QQ群:Y①WEB开发(ASP.NET)号码:7351660 QQ群:Y②WEB开发(ASP+.NET)号码:11864905
  • QQ群:Y③WEB开发(DIV+CSS)号码:16610506 QQ群:Y④WEB开发(JS+AJAX)号码:16143998
  • QQ群:Y⑤WEB开发(新手)号码:12777715 MSN群:yaosansi[at]126.com

C# 中的委托和事件

分类: C#|DOTNET 发布: yaosansi 浏览: 日期: 2007年9月24日

张子阳

浏览地址(PDF):http://www.tracefact.net/document/Delegates_and_Events_In_CSharp.pdf
  

网上比较普遍的流行一些代码混淆和代码压缩工具

分类: JavaScript 发布: yaosansi 浏览: 日期: 2007年9月13日

JSConfusion    代码混淆工具,http://www.cnblogs.com/lion.net

Javascript compressor  代码压缩工具,提供了一种特有的压缩算法对JS的代码进行减肥,也是我看到较早的一个工具,现在经常和JSConfusion结合去使用(当然是先混淆后压缩)

JSObfuscator  集混淆/压缩一体的工具,虽然功能比较多,但在压缩的时候效果不是很好,经过我测试会有时压缩过的代码不能运行

这些是见过的比较好的几个工具,如果你还见过哪些不错功能类似的工具,可以在后面补充~~~~ 

RSA加密在VS.NET的使用

分类: C#|DOTNET 发布: yaosansi 浏览: 日期: 2007年9月6日

首先简单介绍下RSA:

也就是利用公共密钥和私用密钥(public key and private key)进行加密解密,属于可逆操作。由RivestShamirAdlernan三人所研究发明的。它利用两个很大的质数相乘所产生的乘积来加密。这两个质数无论哪一个先与原文件编码相乘,对文件加密,均可由另一个质数再相乘来解密。但要用一个质数来求出另一个质数,则是十分困难的。因此将这一对质数称为密钥对(Key Pair)。在加密应用时,某个用户总是将一个密钥公开,让需发信的人员将信息用其公共密钥加密后发给该用户,而一旦信息加密后,只有用该用户一个人知道的私用密钥才能解密。具有数字凭证身份的人员的公共密钥可在网上查到,亦可在请对方发信息时主动将公共密钥传给对方,这样保证在Internet上传输信息的保密和安全。


 

下面是具体使用方法:



 1 /// <summary>
 2    /// 生成公钥和私钥信息
 3    /// </summary>

 4    public void ExportKeyXml()
 5    {
 6        //ExportParameters和ToXmlString选true时表示公钥和私钥信息同时导出,选false则只导出公钥信息
 7        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
 8       
 9        System.IO.StreamWriter swPublic = new System.IO.StreamWriter(@"F:\Study\myProject\test2005\PublicKeyXml.xml");
10        swPublic.Write(rsa.ToXmlString(false));
11        swPublic.Close();
12
13        System.IO.StreamWriter swPrivate = new System.IO.StreamWriter(@"F:\Study\myProject\test2005\PrivateKeyXml.xml");
14        swPrivate.Write(rsa.ToXmlString(true));
15        swPrivate.Close();
16    }

17
18    /// <summary>
19    /// 加密数据
20    /// </summary>
21    /// <param name="encryptData">需要加密的明文</param>
22    /// <returns>加密后的十六进制字符串,带横杠</returns>

23    public string EncryptData(string encryptData)
24    {
25        //我的xp系统加密数据只支持最长117字节,如果超过了,将会报错,可以采用分段加密
26        if(encryptData.Length > 117)
27            return "";
28
29        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
30        //获取公钥信息
31        System.IO.StreamReader sr = new System.IO.StreamReader(@"F:\Study\myProject\test2005\PublicKeyXml.xml");
32
33        rsa.FromXmlString(sr.ReadToEnd());
34        sr.Close();
35        //加密
36        byte[] bytResult = rsa.Encrypt(System.Text.Encoding.Default.GetBytes(encryptData), false);
37        return BitConverter.ToString(bytResult);
38    }

39
40    /// <summary>
41    /// 解密数据
42    /// </summary>
43    /// <param name="decryptData">加密十六进制字符串,带横杠</param>
44    /// <returns>解密明文</returns>

45    public string DecryptData(string decryptData)
46    {
47        System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
48        //获取私钥钥信息
49        System.IO.StreamReader sr = new System.IO.StreamReader(@"F:\Study\myProject\test2005\PrivateKeyXml.xml");
50
51        rsa.FromXmlString(sr.ReadToEnd());
52        sr.Close();
53        //解密,因为我的加密数据转换成十六进制字符串时没有去掉"-",所以这里直接通过split('-')来分数组
54        //不知道还有没有更好的办法处理,比如隔两位取一次等
55        string[] strKey = decryptData.Split('-');
56        byte[] bytKey = new byte[128];
57        for (int i = 0; i < strKey.Length; i++)
58        {
59            bytKey[i] = Convert.ToByte(strKey[i], 16);
60        }

61        byte[] bytDecryptResult = rsa.Decrypt(bytKey, false);
62        return System.Text.Encoding.Default.GetString(bytDecryptResult);
63    }

 

这里有几个需要注意的地方:

1.当导出密钥信息到文件中时, ToXmlString的参数--true表示公钥和私钥信息,false只导出公钥信息

2.加密的数据长度是有限制的,根据具体环境而有所不同

下表说明了 Microsoft Windows 的不同版本所支持的填充,以及操作系统和填充的不同组合所允许的 rgb 的最大长度。

 

填充

 

支持的操作系统

ASP.Net中MD5和SHA1加密的几种方法

分类: C#|DOTNET 发布: yaosansi 浏览: 日期: 2007年9月6日

首先简单介绍一下MD5SHA1:

 


MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer ScienceRsa data security incRonald l. rivest开发出来,经md2md3md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。

 

加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到蛛丝马迹。

 


 

SHA1的全称是Secure Hash Algorithm(安全哈希算法)

.Net 2.0 新功能:重构(Refactoring)

分类: C#|DOTNET 发布: yaosansi 浏览: 日期: 2007年9月5日

重构(Refactoring)

1.     前言

本来不想写重构,因为VS2005的加了重构功能但目前和Resharper、Eclipse等还是没有可比性。但既然已经有了重构,那么预计VS系列将加强这方面的功能,所以还是先来体验下吧。

.net中前台javascript与后台c#函数相互调用问题

分类: ASP.NET 发布: yaosansi 浏览: 日期: 2007年9月5日

C#代码与javaScript函数的相互调用

问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
 
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
        2、在前台写一个js函数,内容为document.getElementById("btn1").click();
        3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

方法二:1、函数声明为public             
           后台代码(把public改成protected也可以)
           public string ss()
           {
              return("a");
           }
        2、在html里用<%=fucntion()%>可以调用
           前台脚本
           <script language=javascript>
           var a = "<%=ss()%>";
           alert(a);
           </script>
方法三:1、<script language="javascript">
           <!--
           function __doPostBack(eventTarget, eventArgument)
           {
              var theForm = document.Form1;     //指runat=server的form
              theForm.__EVENTTARGET.value = eventTarget;
              theFrom.__EVENTARGUMENT.value = eventArgument;
              theForm.submit();
           }
           -->
           </script>
           <input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">
        
方法四:<script language="javascript">
function SubmitKeyClick()
{
    if (event.keyCode == 13)
    {
        event.cancelBubble = true;
        event.returnValue = false;
        document.all.FunName.value="你要调用的函数名";
        document.form[0].submit();
    }
}
</script>

<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
<input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉

分页:[«]1[»]

Powered By Z-Blog 1.8 Walle Build 100427

UNISON UPDATE Copyright 2005-2010 yaosansi'site All Rights Reserved.
感谢系统大玩家为本站提供FTP空间
辽ICP备05021434号