.net利用MemoryStream加密字符串

原创 2006年05月26日 22:34:00
      在一个项目中需要将用户输入的字符串加密,不过在 System.Security.Cryptography 命名空间下所有用来加密解密的类全部都是对流进行操作的,没有对字符串直接操作的。于是我就到 System.IO 命名空间里找,看看有没有能利用的资源,结果发现了 MemoryStream 类。从这个类的名称来判断应该是对内存操作的流,或者用内存来模拟流。查了MSDN文档,果然可以利用这个类对字符串进行加密。以下是 DES 算法加密解密字符串的代码:

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace MoneyStreamCryptoExample
{
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //初始化加密器生成器
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            des.GenerateKey();
            des.GenerateIV();

            //*************************
            //加密字符串
            //*************************
            string notEncryptStr = Console.ReadLine();
            //将字符串转换成字节
            byte [] byteNotEncrypt = Encoding.UTF8.GetBytes( notEncryptStr );

            //创建内存数据流
            MemoryStream encryptMs = new MemoryStream();

            //创建加密器
            CryptoStream encryptCs = new CryptoStream( encryptMs, des.CreateEncryptor(), CryptoStreamMode.Write );
            //将字节加密并写入内存
            encryptCs.Write( byteNotEncrypt, 0, byteNotEncrypt.Length );
            //将缓存中的数据写入内存
            encryptCs.FlushFinalBlock();
            //回到内存流开始的位置
            encryptMs.Seek( 0, SeekOrigin.Begin );

            //将加密后的数据读取出来
            byte [] byteEncrypt = new byte[1024];
            int i = encryptMs.Read( byteEncrypt, 0, 1024 );

            encryptCs.Close();

            //将加密后的字节转换为BASE64编码
            string secStr = Convert.ToBase64String( byteEncrypt, 0, i );

            Console.WriteLine( secStr );

            //*************************
            //解密字符串
            //*************************
            //将加密后的BASE64编码的字符串转换成字节
            byte [] byteNotDecrypt = Convert.FromBase64String( secStr );

            MemoryStream decryptMs = new MemoryStream( byteNotDecrypt );
            CryptoStream decryptCs = new CryptoStream( decryptMs, des.CreateDecryptor(), CryptoStreamMode.Read );

            //解密数据
            byte [] byteDecrypt = new byte[1024];
            i = decryptCs.Read( byteDecrypt, 0, 1024 );
            decryptCs.Close();

            //输出
            Console.WriteLine( Encoding.UTF8.GetString( byteDecrypt, 0, i ) );

            Console.ReadLine();
        }
    }
}

利用ASP.NET加密和解密Web.config中连接字符串

from:http://www.bdqn.cn/news/201311/12087.shtml 摘要:利用ASP.NET加密和解密Web.config中连接字符串 介绍 这篇文章我将介绍如何...

笔记6:vb.net的内存数据流MemoryStream、缓冲数据流BufferedStream

内存数据流,就是利用内存作为数据的存储区,此时可把这块内存区当作是文件。         它同样派生于Stream类,也具有Read与Write的方法。           MemoryStream类...

asp.net字符串加密解密组件

  • 2008年11月05日 17:35
  • 2KB
  • 下载

.net 查询字符串加密

  • 2011年08月27日 13:03
  • 14KB
  • 下载

修改PDF.NET SOD源代码以支持加密的数据库连接字符串

看了下PDF.NET SOD的代码,好像数据库连接字符串,只支持明文写在config文件的。这在一定程度上存在数据库账号密码泄漏的风险,于是鼓捣了源代码中的PWMIS.DataProvider.Ada...
  • qqcxw
  • qqcxw
  • 2016年07月17日 00:23
  • 1927

asp.net C#中对Web.Config字符串加密与解密的方法

【案例引用】 例如 XML/HTML code ? 1 2 3 connectionStrings>      ...

.net 实现字符串加密解密

#region ========加密======== /// /// 加密 /// /// /// ...

asp.net中字符串加密,解密函数小结

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web...

c# asp.net 字符串加密解密的类

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu...

使用spring.net+nibernate时如何用aspnet_regiis加密数据库连接字符串

使用spring.net+nibernate时数据库连接往往是放在一个 字段中的 不能使用aspnet_regiis直接加密 解决办法是引入一个专门负责键值对应的配置节 在这个配...
  • rav009
  • rav009
  • 2013年01月19日 23:23
  • 1162
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.net利用MemoryStream加密字符串
举报原因:
原因补充:

(最多只允许输入30个字)