.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类...

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

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

.net 实现字符串加密解密

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

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

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

.net 查询字符串加密

  • 2011-08-27 13:03
  • 14KB
  • 下载

图解asp.net数据库连接字符串加密和aspnet_regiis

一 使用aspnet_regiis加密数据库连接字符串 项目在C:\sl2\28\ShoppingCart\ 加密前; 此次加密使用的命令; 加密后;数...

URL中加入BASE64加密的字符串引起的问题(java.net.MalformedURLException:Illegal character in URL)

序 昨天在做一个 Demo 的时候,由于是调用第三方的接口,采用的是 HTTP 的通信协议,按照文档上的说明,需要把参数进行加密后加入到 URL 中,但是,就是这个看似普普通通的操作,却让我着实费...

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

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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