- 浏览: 244021 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
yulanlian:
...
实现在删除数据后,自增列的值连续 -
RonQi:
楼主写的很好,支持原创!
Google Protocol Buffers
using System; using System.Text; using System.Security; using System.Security.Cryptography; using System.IO; namespace EncryptClasses { /// <summary> /// 此处定义的是DES加密,为了便于今后的管理和维护 /// 请不要随便改动密码,或者改变了密码后请一定要 /// 牢记先前的密码,否则将会照成不可预料的损失 /// </summary> public class DESEncrypt { #region "member fields" private string iv="12345678"; private string key="12345678"; private Encoding encoding=new UnicodeEncoding(); private DES des; #endregion /// <summary> /// 构造函数 /// </summary> public DESEncrypt() { des=new DESCryptoServiceProvider(); } #region "propertys" /// <summary> /// 设置加密密钥 /// </summary> public string EncryptKey { get{return this.key;} set { this.key=value; } } /// <summary> /// 要加密字符的编码模式 /// </summary> public Encoding EncodingMode { get{return this.encoding;} set{this.encoding=value;} } #endregion #region "methods" /// <summary> /// 加密字符串并返回加密后的结果 /// </summary> /// <param name="str"></param> /// <returns></returns> public string EncryptString(string str) { byte[] ivb=Encoding.ASCII.GetBytes(this.iv); byte[] keyb=Encoding.ASCII.GetBytes(this.EncryptKey);//得到加密密钥 byte[] toEncrypt=this.EncodingMode.GetBytes(str);//得到要加密的内容 byte[] encrypted; ICryptoTransform encryptor=des.CreateEncryptor(keyb,ivb); MemoryStream msEncrypt=new MemoryStream(); CryptoStream csEncrypt=new CryptoStream(msEncrypt,encryptor,CryptoStreamMode.Write); csEncrypt.Write(toEncrypt,0,toEncrypt.Length); csEncrypt.FlushFinalBlock(); encrypted=msEncrypt.ToArray(); csEncrypt.Close(); msEncrypt.Close(); return this.EncodingMode.GetString(encrypted); } /// <summary> /// 加密指定的文件,如果成功返回True,否则false /// </summary> /// <param name="filePath">要加密的文件路径</param> /// <param name="outPath">加密后的文件输出路径</param> public void EncryptFile(string filePath,string outPath) { bool isExist=File.Exists(filePath); if(isExist)//如果存在 { byte[] ivb=Encoding.ASCII.GetBytes(this.iv); byte[] keyb=Encoding.ASCII.GetBytes(this.EncryptKey); //得到要加密文件的字节流 FileStream fin=new FileStream(filePath,FileMode.Open,FileAccess.Read); StreamReader reader=new StreamReader(fin,this.EncodingMode); string dataStr=reader.ReadToEnd(); byte[] toEncrypt=this.EncodingMode.GetBytes(dataStr); fin.Close(); FileStream fout=new FileStream(outPath,FileMode.Create,FileAccess.Write); ICryptoTransform encryptor=des.CreateEncryptor(keyb,ivb); CryptoStream csEncrypt=new CryptoStream(fout,encryptor,CryptoStreamMode.Write); try { //加密得到的文件字节流 csEncrypt.Write(toEncrypt,0,toEncrypt.Length); csEncrypt.FlushFinalBlock(); } catch(Exception err) { throw new ApplicationException(err.Message); } finally { try { fout.Close(); csEncrypt.Close(); } catch { ; } } } else { throw new FileNotFoundException("没有找到指定的文件"); } } /// <summary> /// 文件加密函数的重载版本,如果不指定输出路径, /// 那么原来的文件将被加密后的文件覆盖 /// </summary> /// <param name="filePath"></param> public void EncryptFile(string filePath) { this.EncryptFile(filePath,filePath); } /// <summary> /// 解密给定的字符串 /// </summary> /// <param name="str">要解密的字符</param> /// <returns></returns> public string DecryptString(string str) { byte[] ivb=Encoding.ASCII.GetBytes(this.iv); byte[] keyb=Encoding.ASCII.GetBytes(this.EncryptKey); byte[] toDecrypt=this.EncodingMode.GetBytes(str); byte[] deCrypted=new byte[toDecrypt.Length]; ICryptoTransform deCryptor=des.CreateDecryptor(keyb,ivb); MemoryStream msDecrypt=new MemoryStream(toDecrypt); CryptoStream csDecrypt=new CryptoStream(msDecrypt,deCryptor,CryptoStreamMode.Read); try { csDecrypt.Read(deCrypted,0,deCrypted.Length); } catch(Exception err) { throw new ApplicationException(err.Message); } finally { try { msDecrypt.Close(); csDecrypt.Close(); } catch{;} } return this.EncodingMode.GetString(deCrypted); } /// <summary> /// 解密指定的文件 /// </summary> /// <param name="filePath">要解密的文件路径</param> /// <param name="outPath">解密后的文件输出路径</param> public void DecryptFile(string filePath,string outPath) { bool isExist=File.Exists(filePath); if(isExist)//如果存在 { byte[] ivb=Encoding.ASCII.GetBytes(this.iv); byte[] keyb=Encoding.ASCII.GetBytes(this.EncryptKey); FileInfo file=new FileInfo(filePath); byte[] deCrypted=new byte[file.Length]; //得到要解密文件的字节流 FileStream fin=new FileStream(filePath,FileMode.Open,FileAccess.Read); //解密文件 try { ICryptoTransform decryptor=des.CreateDecryptor(keyb,ivb); CryptoStream csDecrypt=new CryptoStream(fin,decryptor,CryptoStreamMode.Read); csDecrypt.Read(deCrypted,0,deCrypted.Length); } catch(Exception err) { throw new ApplicationException(err.Message); } finally { try { fin.Close(); } catch{;} } FileStream fout=new FileStream(outPath,FileMode.Create,FileAccess.Write); fout.Write(deCrypted,0,deCrypted.Length); fout.Close(); } else { throw new FileNotFoundException("指定的解密文件没有找到"); } } /// <summary> /// 解密文件的重载版本,如果没有给出解密后文件的输出路径, /// 则解密后的文件将覆盖先前的文件 /// </summary> /// <param name="filePath"></param> public void DecryptFile(string filePath) { this.DecryptFile(filePath,filePath); } #endregion } /// <summary> /// MD5加密类,注意经MD5加密过的信息是不能转换回原始数据的 /// ,请不要在用户敏感的信息中使用此加密技术,比如用户的密码, /// 请尽量使用对称加密 /// </summary> public class MD5Encrypt { private MD5 md5; public MD5Encrypt() { md5=new MD5CryptoServiceProvider(); } /// <summary> /// 从字符串中获取散列值 /// </summary> /// <param name="str">要计算散列值的字符串</param> /// <returns></returns> public string GetMD5FromString(string str) { byte[] toCompute=Encoding.Unicode.GetBytes(str); byte[] hashed=md5.ComputeHash(toCompute,0,toCompute.Length); return Encoding.ASCII.GetString(hashed); } /// <summary> /// 根据文件来计算散列值 /// </summary> /// <param name="filePath">要计算散列值的文件路径</param> /// <returns></returns> public string GetMD5FromFile(string filePath) { bool isExist=File.Exists(filePath); if(isExist)//如果文件存在 { FileStream stream=new FileStream(filePath,FileMode.Open,FileAccess.Read); StreamReader reader=new StreamReader(stream,Encoding.Unicode); string str=reader.ReadToEnd(); byte[] toHash=Encoding.Unicode.GetBytes(str); byte[] hashed=md5.ComputeHash(toHash,0,toHash.Length); stream.Close(); return Encoding.ASCII.GetString(hashed); } else//文件不存在 { throw new FileNotFoundException("指定的文件没有找到"); } } } /// <summary> /// 用于数字签名的hash类 /// </summary> public class MACTripleDESEncrypt { private MACTripleDES mact; private string __key="ksn168ch"; private byte[] __data=null; public MACTripleDESEncrypt() { mact=new MACTripleDES(); } /// <summary> /// 获取或设置用于数字签名的密钥 /// </summary> public string Key { get{return this.__key;} set { int keyLength=value.Length; int[] keyAllowLengths=new int[]{8,16,24}; bool isRight=false; foreach(int i in keyAllowLengths) { if(keyLength==keyAllowLengths[i]) { isRight=true; break; } } if(!isRight) throw new ApplicationException("用于数字签名的密钥长度必须是8,16,24值之一"); else this.__key=value; } } /// <summary> /// 获取或设置用于数字签名的用户数据 /// </summary> public byte[] Data { get{return this.__data;} set{this.__data=value;} } /// <summary> /// 得到签名后的hash值 /// </summary> /// <returns></returns> public string GetHashValue() { if(this.Data==null) throw new NotSetSpecialPropertyException("没有设置要进行数字签名的用户"+ "数据(property:Data)"); byte[] key=Encoding.ASCII.GetBytes(this.Key); this.mact.Key=key; byte[] hash_b=this.mact.ComputeHash(this.mact.ComputeHash(this.Data)); return Encoding.ASCII.GetString(hash_b); } } }
发表评论
-
win7和VS2010下配置OpenGL的方法
2011-01-15 23:45 6405刚装了win7和VS2010。看了下配置OpenGL的方法和以 ... -
用好ASP.NET 2.0的URL映射
2010-12-06 08:31 757简介: URL映射是ASP.NET 2.0中提供的 ... -
加密web.config中数据参数的信息
2010-12-06 08:17 823我们都知道web.config可以保存连接字符串, ... -
主题:ASP.NET加上水印
2010-12-02 19:56 806为我们发布的图片加上一个水印,也是我们经常要做的事情,那怎 ... -
asp.net 2.0 读写配置文件
2010-12-01 11:13 1102下面我给出一个简单的例子说明如何使用WebConf ... -
ASP.NET配置文件的读、写操作
2010-12-01 11:03 1314虽然web.config文件是一个XML文件,但是由于权限的原 ... -
使用aspx实现发送email
2010-11-28 22:08 732源代码如下:using System; using Syst ... -
未能加载文件或程序集system.web.extensions解决方法
2010-11-27 09:40 1630未能加载文件或程序集system.web.extensions ... -
asp.net根据域名查ip C#版
2010-10-31 17:04 998网上有类似的教程,但是是asp.net 1.1的版本,这是本人 ... -
如何构造一个C#语言的爬虫程序
2010-10-31 17:03 858C#特别适合于构造蜘蛛 ... -
C#代码与javaScript函数的相互调用
2010-10-31 16:55 1113C#代码与javaScript函数的相互调用 我们通过问答 ... -
C#操作XML的类:xmlHelper例子
2010-10-31 16:31 4453首先,看下这个XmlHelper类库的结构,如下图: 然后, ... -
C#知识点总结_委托篇
2010-10-30 18:10 622C#知识点总结1——委托篇 1.委托概念: 当要把方法传 ... -
调用Windows API
2010-10-30 18:04 998在.Net Framework SDK文档中 ... -
C#中正确的调用API函数
2010-10-30 18:02 993在C#中经常需要调用一些API函数,那么怎样才能正确的调用AP ... -
用C#和本地Windows API操纵系统菜单
2010-10-30 18:00 1518一、前言 .NET框架是Windows应用领域中一个非常新 ... -
.NET(C#)连接各类数据库代码-集锦
2010-09-05 07:59 12911.C#连接连接Access using System.Da ... -
C#调用rar.exe解压一个rar文件到系统的临时目录
2010-08-31 00:04 1878//取得系统临时目录 string sysTempDir = ... -
C#实现winform软件开机自动启动并最小化到系统托盘
2010-08-31 00:01 4433一、开机自动启动: 拖一个CheckBox 1、软件启动时 ... -
C#里面比较时间大小三种方法收藏
2010-08-30 23:56 12781.比较时间大小的实验 string st1 ...
相关推荐
在Visual Studio .NET加密技术剖析系列课程中,我们还会探讨如何在应用程序中集成这些加密机制,包括如何安全地存储和管理私钥,以及如何处理可能出现的安全隐患。此外,课程还将涉及PKCS#7标准,这是一个用于打包和...
.NET加密技术是软件开发中确保数据安全的重要环节,它涵盖了多种加密算法和方法,用于保护敏感信息不被未经授权的人员访问。对称加密技术是一种常见的加密手段,它以其高效和简单的特点,在.NET框架中得到了广泛应用...
在.NET框架中,C#语言提供了丰富的加密技术,用于数据的安全保护。本课程重点讨论的是对称加密技术,这是加密领域中最基础且广泛使用的手段。对称加密算法的核心特点是加密和解密使用相同的密钥,这使得其在处理大量...
这个名为"vb.net加密解密源代码"的项目,是利用Visual Studio 2008开发的一个小型应用程序,提供了对数据进行加解密的功能。下面我们将详细探讨相关的知识点。 1. **VB.NET基础**: VB.NET是微软公司开发的一种...
在本系列课程“Visual Studio .NET加密技术剖析”中,我们将深入探讨.NET框架下的加密技术,特别是针对C#编程环境的应用。加密技术是网络安全的重要组成部分,它为数据提供了隐私保护和完整性验证。在这个第一部分中...
本课程“Visual Studio .NET加密技术剖析系列课程(2):对称加密技术”专注于讲解对称加密这一关键概念,它是数据加密的基础之一。 对称加密是一种历史悠久且广泛应用的加密方式,其核心特点是加密和解密使用同一...
本资源"asp.net加密元件,反加密(源代码)"提供了一套详细的加密和解密机制,特别适用于ASP.NET Web服务(webservice)中的应用。下面我们将深入探讨这些知识点: 1. ASP.NET 加密: ASP.NET 提供了多种加密选项,...
在.NET框架中,加密和解密是网络安全的重要组成部分,用于保护数据的安全性和隐私。本文将深入探讨ASP.NET中自定义加密解密的方法,以及如何根据用户...理解并正确应用这些技术,对于构建安全的Web应用程序至关重要。
通过分析和运行这个示例,开发者能够掌握如何在实际项目中应用加密技术,保护用户的隐私和数据安全。同时,自定义关键字的功能允许用户根据自己的业务需求调整加密策略,增加了灵活性。对于那些需要在.NET环境中处理...
在 ASP.NET 应用程序中,我们可以使用 XML 加密和解密技术来保护 XML 数据。XML 加密和解密可以使用 System.Security.Cryptography 命名空间中的类来实现。 五、ASP.NET 加密解密技巧 在 ASP.NET 应用程序中,我们...
在阅读和学习这个.NET加密数据报的完整实例源码时,你需要关注上述知识点的实现细节,并理解它们在实际项目中的应用场景。通过深入分析和实践,你将能够熟练掌握C#中的加密技术,提升你的编程技能。
三、ASP.NET加密解密工具的使用 在ASP.NET中,可以使用System.Security.Cryptography命名空间中的类来实现加密和解密操作。例如,使用AES加密: ```csharp using System.IO; using System.Text; using System....
1. SM4对称加密算法及其在.NET Core和JavaScript中的实现。 2. LayUI前端框架的使用,以及前端加密库如CryptoJS的集成。 3. C#的System.Security.Cryptography命名空间和SM4CryptoServiceProvider类的应用。 4. 前后...
在ASP.NET中,主要使用两种加密技术:对称加密和非对称加密。 1. 对称加密: 对称加密使用相同的密钥进行加密和解密。常见的对称加密算法有DES、3DES、AES等。例如,使用AES(高级加密标准)时,可以使用`System....
在本文中,我们将深入探讨.NET框架下的文件加密技术以及如何创建一个能够解密并播放加密文件的播放器。 首先,我们来了解.NET文件加密。在C#中,我们可以使用内置的安全类来实现文件的加密。这些类主要存在于System...
在VB.NET编程环境中,开发一个项目常常涉及到各种技术与知识点的综合运用。在这个"vb.netProject1.rar"项目中,开发者构建了一个具有文件加密、排序和解密功能的小型应用程序。这个项目对于学习和理解VB.NET语言以及...
本文将深入探讨.NET加密解密的实现,包括基础概念、常用算法、加密库以及具体的编码示例。 首先,理解加密的基本原理至关重要。加密是将明文数据转化为看似随机的密文,以防止未经授权的访问。解密则是逆过程,将...
本书详细讲解了.NET的安全模型,包括身份验证、授权、加密和解密等,以及如何利用ASP.NET的身份验证和授权机制来保护应用程序。 最后,书中还讨论了.NET中的测试和调试技术,包括单元测试、集成测试和性能测试,...
在实际应用中,除了这些简单的加密方法外,更推荐使用标准的加密库,如AES(高级加密标准)或RSA(公钥加密技术)。这些算法已被广泛验证,安全性和效率都较高。VB.NET提供了System.Security.Cryptography库,封装了...