`
无恨星晨
  • 浏览: 31894 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
文章分类
社区版块
存档分类
最新评论

Asp.net,C# 加密解密字符串

阅读更多
首先在web.config | app.config 文件下增加如下代码:
<?xml version="1.0"?>
  <configuration>
    <appSettings>
      <add key="IV" value="SuFjcEmp/TE="/>
      <add key="Key" value="KIPSToILGp6fl+3gXJvMsN4IajizYBBT"/>
    </appSettings>
  </configuration>



IV:加密算法的初始向量。

Key:加密算法的密钥。



接着新建类CryptoHelper,作为加密帮助类。

首先要从配置文件中得到IV 和Key。所以基本代码如下:
public class CryptoHelper
        {
            //private readonly string IV = "SuFjcEmp/TE=";
            private readonly string IV = string.Empty;
            //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
            private readonly string Key = string.Empty;

            /// <summary>
            ///构造函数
            /// </summary>
            public CryptoHelper()
            {
                IV = ConfigurationManager.AppSettings["IV"];
                Key = ConfigurationManager.AppSettings["Key"];
            }
        }





注意添加System.Configuration.dll程序集引用。



在获得了IV 和Key 之后,需要获取提供加密服务的Service 类。

在这里,使用的是System.Security.Cryptography; 命名空间下的TripleDESCryptoServiceProvider类。

获取TripleDESCryptoServiceProvider 的方法如下:
/// <summary>
        /// 获取加密服务类
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;
        }



TripleDESCryptoServiceProvider 两个有用的方法

CreateEncryptor:创建对称加密器对象ICryptoTransform.

CreateDecryptor:创建对称解密器对象ICryptoTransform

加密器对象和解密器对象可以被CryptoStream对象使用。来对流进行加密和解密。

cryptoStream 的构造函数如下:
public CryptoStream(Stream stream, ICryptoTransform transform, CryptoStreamMode mode);

使用transform 对象对stream 进行转换。



完整的加密字符串代码如下:
/// <summary>
        /// 获取加密后的字符串
        /// </summary>
        /// <param name="inputValue">输入值.</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            // 创建内存流来保存加密后的流
            MemoryStream mStream = new MemoryStream();

            // 创建加密转换流
            CryptoStream cStream = new CryptoStream(mStream,
            provider.CreateEncryptor(), CryptoStreamMode.Write);

            // 使用UTF8编码获取输入字符串的字节。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 将字节写到转换流里面去。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            //将加密后的字节进行64编码。
            return Convert.ToBase64String(ret);
        }





解密方法也类似:
/// <summary>
        /// 获取解密后的值
        /// </summary>
        /// <param name="inputValue">经过加密后的字符串.</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            // 创建内存流保存解密后的数据
            MemoryStream msDecrypt = new MemoryStream();

            // 创建转换流。
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
                                                        provider.CreateDecryptor(),
                                                        CryptoStreamMode.Write);

            csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);

            csDecrypt.FlushFinalBlock();
            csDecrypt.Close();

            //获取字符串。
            return new UTF8Encoding().GetString(msDecrypt.ToArray());
        }





完整的CryptoHelper代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Configuration;

namespace WindowsFormsApplication1
{
    public class CryptoHelper
    {
        //private readonly string IV = "SuFjcEmp/TE=";
        private readonly string IV = string.Empty;
        //private readonly string Key = "KIPSToILGp6fl+3gXJvMsN4IajizYBBT";
        private readonly string Key = string.Empty;

        public CryptoHelper()
        {
            IV = ConfigurationManager.AppSettings["IV"];
            Key = ConfigurationManager.AppSettings["Key"];
        }

        /// <summary>
        /// 获取加密后的字符串
        /// </summary>
        /// <param name="inputValue">输入值.</param>
        /// <returns></returns>
        public string GetEncryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();

            // 创建内存流来保存加密后的流
            MemoryStream mStream = new MemoryStream();

            // 创建加密转换流
            CryptoStream cStream = new CryptoStream(mStream,

            provider.CreateEncryptor(), CryptoStreamMode.Write);
            // 使用UTF8编码获取输入字符串的字节。
            byte[] toEncrypt = new UTF8Encoding().GetBytes(inputValue);

            // 将字节写到转换流里面去。
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // 在调用转换流的FlushFinalBlock方法后,内部就会进行转换了,此时mStream就是加密后的流了。
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            //将加密后的字节进行64编码。
            return Convert.ToBase64String(ret);
        }

        /// <summary>
        /// 获取加密服务类
        /// </summary>
        /// <returns></returns>
        private TripleDESCryptoServiceProvider GetCryptoProvider()
        {
            TripleDESCryptoServiceProvider provider = new TripleDESCryptoServiceProvider();

            provider.IV = Convert.FromBase64String(IV);
            provider.Key = Convert.FromBase64String(Key);

            return provider;

        }

        /// <summary>
        /// 获取解密后的值
        /// </summary>
        /// <param name="inputValue">经过加密后的字符串.</param>
        /// <returns></returns>
        public string GetDecryptedValue(string inputValue)
        {
            TripleDESCryptoServiceProvider provider = this.GetCryptoProvider();
            byte[] inputEquivalent = Convert.FromBase64String(inputValue);

            // 创建内存流保存解密后的数据
            MemoryStream msDecrypt = new MemoryStream();

            // 创建转换流。
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
            provider.CreateDecryptor(),
            CryptoStreamMode.Write);

            csDecrypt.Write(inputEquivalent, 0, inputEquivalent.Length);
            csDecrypt.FlushFinalBlock();

            csDecrypt.Close();

            //获取字符串。
            return new UTF8Encoding().GetString(msDecrypt.ToArray());
        }
    }
}





分享到:
评论

相关推荐

    解析Asp.net,C# 纯数字加密解密字符串的应用

    继上篇:Asp.net,C# 加密解密字符串的使用详解,有网友提问: 也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng==   希望encryptedString是”120387789370480938409832840923492384028934…”; 当然上面的...

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

    本篇文章将深入探讨C# ASP.NET中字符串加密解密的类和方法,以及如何在实际项目中应用它们。 首先,我们要了解加密的基本概念。加密是将明文(可读数据)转化为密文(不可读数据)的过程,而解密则是相反的过程。在...

    Asp.net,C# 加密解密字符串的使用详解

    总结起来,Asp.net和C#中加密解密字符串主要涉及以下步骤: 1. 在配置文件中定义IV和Key。 2. 创建一个辅助类来处理加密解密,从配置文件读取IV和Key。 3. 使用`TripleDESCryptoServiceProvider`获取加密器和解密器...

    C# ASP.NET - 加密解密Web.config文件

    总结来说,C# ASP.NET提供的加密解密机制为Web.config文件的安全提供了有力保障。通过合理使用`SectionInformation`类的方法,我们可以对敏感配置信息进行加密,从而防止未授权访问,同时在需要时解密以正常运行应用...

    ASP.NET实现 DES加密解密类

    总之,ASP.NET中的DES加密解密涉及到对字符串数据的加密和解密,通过使用`DESCryptoServiceProvider`类,结合MD5哈希处理,实现了对数据的安全保护。尽管DES已不再是最安全的选择,但了解其原理和应用有助于理解加密...

    .net加密解密算法demo

    `web.config`文件是ASP.NET应用程序的配置文件,可能包含了数据库连接字符串、应用程序设置以及安全相关的配置,例如身份验证和授权规则。其中,你可以找到与加密相关的配置项,比如机器密钥(MachineKey),它用于...

    .Net加密解密方法

    本文将深入探讨ASP.NET中自定义加密解密的方法,以及如何根据用户设定的密钥进行操作。 首先,我们要了解加密的基本原理。加密是将明文数据转化为无法理解的形式,即密文,而解密则是将密文恢复为原始的明文数据。...

    C#加密解密类及使用说明

    三、C#加密解密步骤 1. **选择合适的加密算法**:根据应用场景,如数据量、安全性需求等选择合适的加密算法。 2. **生成密钥和初始化向量(IV)**:密钥是加密的核心,必须妥善保管。IV是某些块加密算法的必需参数,...

    visual studio 2013 C# DES 加密解密 asp.net 完整 源码 下载

    VS C#2013 DES加密解密完整源代码 测试平台 visual studio 2013 win8.1 依据网上资源整理,并亲测,并写出窗口供调用演示,原代码全部打包奉上,可供学习使用。 public static string EncryptDES(string ...

    md5加密和解密源码.net c#版本

    在.NET和C#环境中,MD5加密和解密源码涉及到的主要知识点包括MD5算法的基本原理、C#中的MD5类库使用以及加密和解密的实现过程。 1. **MD5算法基础** - **哈希函数**:MD5是一种非对称的单向哈希函数,它将任意长度...

    asp.net类库,读域名,Common类库,字符串加密等

    字符串加密通常涉及密钥管理、加密解密过程以及安全编码实践,以防止数据泄露。 这些资源对于任何`ASP.NET`和`C#`开发者来说都是宝贵的财富,它们可以直接整合到项目中,加速开发进程,同时保证代码的稳定性和安全...

    C#、Vb.net加解密

    接下来将加密后的十六进制字符串重新转换为字节数组,并通过 `CryptoStream` 进行解密。最后,将解密后的字节数组转换回原始字符串。 ##### 2. VB.NET 示例代码简析 VB.NET 的示例代码没有给出完整的实现,但我们...

    C#给字符串加密&解密类(源码)

    在ASP.NET中有非常简单的加密方法,WinForm中也有简单的加密算法,但是如果要实现加密后的密文反向解密,以上的方法都是做不到的。比如,如果你要用密码找回功能,以上方法加密过后,无法解析成明文。本类虽然比较...

    WEBCONFIG数据库链接加密解密算法

    WebConfigEncryptDecrypt.aspx和WebConfigEncryptDecrypt.aspx.cs这两个文件很可能是一个简单的ASP.NET Web应用程序,用于实现Web.config文件中数据库连接字符串的加密和解密功能。WebConfigEncryptDecrypt.aspx可能...

    Asp.Net 完整实例

    10. **安全性**:Asp.Net提供了身份验证、授权、加密解密等功能,确保应用的安全性。常见的身份验证模式有Windows身份验证、Forms身份验证和OAuth等。 这个"Asp.Net 完整实例"可能包含了一个典型的Asp.Net Web应用...

    js的3des加解密和c#.net后台解密

    - `Web.config`、`Web.Release.config`、`Web.Debug.config`: 这些是ASP.NET应用程序的配置文件,用于控制不同环境下的应用设置,如连接字符串、编译选项等。 - `DESHelper.cs`、`Test.aspx.cs`: 这些可能是C#.NET...

    ASP.NET面试题

    本文档对ASP.NET面试题进行了详细的解释和分析,涵盖了 Session 存放、错误处理机制、数据绑定、字符串处理、Cookie 应用、IIS 版本支持、变量传递、浏览器地址栏传值、MD5 加密等多个方面的知识点。 一、Session ...

    C#最全基类源码(包括ASP.NET类库、读取AD域里用户名或组、Common类库、DotNet基础类大全、SqlHelper基类、字符串加密)

    这个压缩包中的资源提供了丰富的C#基类源码,涵盖了ASP.NET类库、Active Directory(AD)用户和组的读取、通用(Common)类库、.NET基础类的全面集合、SqlHelper数据库操作基类以及字符串加密方法。下面我们将详细探讨...

Global site tag (gtag.js) - Google Analytics