`
xfth2009
  • 浏览: 50583 次
  • 性别: Icon_minigender_2
  • 来自: 襄樊
社区版块
存档分类
最新评论

通过密钥对字符串进行加解密(C#)

阅读更多
2009-07-07
视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!
 
  /// <summary>字符串加解密
    /// 
    /// </summary>
    public class Encrypt
    {
        private SymmetricAlgorithm mCSP;
        private const string CIV = "oo*/^fsA";  //密钥, 只能是8位
        private const string CKEY = "f123$dew"; //初始化向量, 只能是8位

        public Encrypt()
        {
            mCSP = new DESCryptoServiceProvider();
        }

        /// <summary>加密字符串
        /// 
        /// </summary>
        /// <param name="Value"></param>
        /// <returns></returns>
        public string EncryptString(string Value)
        {
            ICryptoTransform ct;
            MemoryStream ms;
            CryptoStream cs;
            byte[] byt;
            // 这里视频上用的是Convert.FromBase64String(CKEY/CIV),但是我用的话总是出现错误,什么大小不对
            ct = mCSP.CreateEncryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
            byt = Encoding.UTF8.GetBytes(Value);
            ms = new MemoryStream();
            cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();
            return Convert.ToBase64String(ms.ToArray());
        }

        /// <summary>解密字符串
        /// 
        /// </summary>
        /// <param name="Value"></param>
        /// <returns></returns>
        public string DecryptString(string Value)
        {
            ICryptoTransform ct;
            MemoryStream ms;
            CryptoStream cs;
            byte[] byt;
            ct = mCSP.CreateDecryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
            byt = Convert.FromBase64String(Value);

            ms = new MemoryStream();
            cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();

            return Encoding.UTF8.GetString(ms.ToArray());
        }
    }

测试代码:
        static void Main(string[] args)
        {
            Console.Write("请输入要加密的字符串:");
            string str = Console.ReadLine();
            Console.WriteLine("加密后:" + new Encrypt().EncryptString(str));
            Console.ReadLine();

            Console.Write("请输入要解密的字符串:");
            string str2 = Console.ReadLine();
            Console.WriteLine("解密后:" + new Encrypt().DecryptString(str2));
            Console.ReadLine();
        }

测试效果:

分享到:
评论

相关推荐

    c#版字符串DES加密解密工具源码

    5. **解密过程**:与加密相反,将加密后的字节数组通过解密流进行解密,还原成原始字符串。 在压缩包中的`StringEnCode.sln`文件是Visual Studio的解决方案文件,包含了项目的所有信息和依赖关系。`StringEnCode....

    DES.zip_C#加密解密_DES字符串_Des 加密 解密_des_加密解密

    DES加密解密算法。通过密钥对对字符串进行加密解密操作,64位加密

    字符串的加密解密操作实现

    例如,使用AES加密时,需要先对字符串进行填充以达到指定的块大小,然后通过加密算法和密钥进行处理。 - **解密过程**:使用对应的解密算法和密钥,将密文还原为原始字符串。解密过程是加密过程的逆向操作。 3. **...

    c#对字符串加密解密函数

    在C#中,对字符串进行加密和解密可以使用DESCryptoServiceProvider类,该类提供了对称加密算法,使用密钥对数据进行加密和解密。 加密函数 加密函数DESEncrypt(string encryptstring)用于对输入的字符串进行加密。...

    C#字符串加解密源码

    在"C#字符串加解密源码"中,描述提到了"可以输入key值加密",这通常指的是使用密钥加密算法,如AES(高级加密标准)或者DES(数据加密标准)。这些算法需要一个密钥作为参数,密钥的强度直接影响了加密的安全性。AES...

    C#对字符串加密解密dll源码

    描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...

    C#/JS AES字符串加密和解密

    1. **AES加密算法**:用于对数据进行加解密。 2. **JavaScript的CryptoJS库**:提供前端的加密功能。 3. **C#的System.Security.Cryptography**:后端解密所需的.NET类库。 4. **密钥管理**:确保密钥在前端和后端...

    字符串的加密解密

    在给定的“字符串的加密解密”项目中,我们可以推断这是一个使用Visual Studio 2012开发的通用加密解密库,适用于多种编程场景。下面将详细探讨字符串加密解密的基本原理、常见算法以及如何在实际应用中使用。 1. *...

    1C#使用DES算法加密字符串为定长字符串的方法及代码实现[整理].pdf

    文档中所提到的代码通过.NET框架的System.Security.Cryptography命名空间下的类库来实现DES加密和解密操作,并且确保了加密后的字符串为定长输出,这通常是通过Base64编码来达成的。本文档还涉及到了异常处理和界面...

    字符串加密解密算法

    字符串加密解密算法是一种对字符串(文本数据)进行加密和解密的方法,以确保其在传输或存储过程中的安全性。加密过程将明文转换为密文,而解密则将密文还原为原始的明文。这涉及到一系列数学运算和算法设计,确保...

    C# RSA加密解密

    4. 在解密按钮的事件处理程序中,首先解码Base64字符串,然后进行解密操作,显示解密后的明文。 **5. 文件加密与解密** 除了对简单文本进行加密,C#的RSA还可以用于文件加密。通过读取文件内容,加密后写入新文件...

    用于加密解密简单字符串的小程序

    3. **解密过程**:解密过程与加密相反,使用相同的密钥和初始化向量,通过解密器将密文还原成原始的字节数组,最后再转换回字符串。 4. **安全性考虑**:尽管对称加密高效,但密钥管理是关键问题。如果密钥被泄露,...

    C#实现十六进制AES的加解密,字节数组工具类

    4. 加密/解密数据:通过CryptoStream读取或写入原始字节数组进行加解密操作。 5. 清理资源:使用完AES实例后,应调用`Clear()`方法清除敏感信息。 在实际应用中,`AesHelper.cs`可能还包含了处理异常、错误处理和...

    字符串加解密

    本文将深入探讨基于.NET Framework 4.0的控制台应用程序中实现的简单字符串加解密程序,结合提供的文件名,我们可以推测这是一个C#项目,包含了程序配置、主要逻辑代码以及项目解决方案。 首先,`App.config`是.NET...

    简单的C#字符串加解密程序

    本项目“简单的C#字符串加解密程序”旨在提供一个易于理解和使用的加密和解密解决方案,以保护敏感信息的安全。 在C#中,有多种方法可以实现字符串的加解密,包括但不限于对称加密(如AES、DES)、非对称加密(如...

    c# 可逆 加密 解密算法

    通过对C#中的`DeEncode`类进行分析,我们可以了解到如何使用`.NET`框架提供的工具实现基本的对称加密解密操作。尽管这个例子较为基础,但它为我们提供了一个很好的起点,可以在实际项目中进一步扩展和完善。

    C# RSA读取密钥文件pfx cer 签名验签加密解密帮助类

    本篇文章将深入探讨如何在C#中使用RSA算法处理pfx和cer密钥文件,进行签名验证、加密和解密,并介绍如何实现C#与Java之间的公钥私钥互转。 首先,`pfx`文件是一种包含证书和私钥的二进制文件,通常用于存储服务器...

    用 c# 做的字符串加密解密工具

    - **加密操作**:使用选定的算法、密钥和IV对字符串进行加密,得到加密后的二进制数据。 4. **解密过程**: - **密钥和IV的存储与传递**:为了解密,接收方需要知道加密时使用的密钥和IV。这可以通过安全的方式...

    字符串加密解密源码c#

    C#是一种广泛用于开发Windows应用程序和Web服务的编程语言,它提供了丰富的库和功能来实现字符串的加密与解密。以下是对这个主题的详细阐述: 1. **基本概念** - **加密**:将明文(可读数据)转换为密文(不可读...

    C#RSA私钥加密公钥解密

    - `ToBase64String()` 和 `FromBase64String()`:可能用于将字节数组转换为Base64字符串,以便于存储和传输。 在Windows Forms应用程序中,可能有一个用户界面,允许用户输入明文,展示密文,以及进行加密和解密...

Global site tag (gtag.js) - Google Analytics