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

  视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!

Code
    /// <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();
        }

 

 测试效果:

 

时间: 2024-11-24 18:31:19

通过密钥对字符串进行加解密(C#)的相关文章

php5数字型字符串加解密代码_php技巧

<?php /* ---------------------------------------------------------------------------- * Script Name: encrypt.php * Creation Date: 2008-4-7 10:36 * Last Modified: 2008-4-12 16:00 * Author: meyu * Copyright (c) 2007 * Purpose: 数字字符串简易加解密 * ------------

openssl enc 加解密

原文地址: http://blog.csdn.net/fym0121/article/details/7984733 介绍 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加密,数据经典算法,但由于其容易被破译,现在已很少使用:分组加密算法是将数据分成固定大小的组里,然后逐组进行加密,比较广为人知的是DES3.分组算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默认选CBC工作模式. 语法 op

C#字符串使用密钥进行加解密_C#教程

第一个为大家分享的是C#字符串使用密钥进行加解密代码,具体内容如下 public class DesEncrypt { /// <summary> /// 算法偏移量 /// </summary> const string m_IV = "12345678"; /// <summary> /// 功能描述:根据输入的密钥生成8位密钥 /// 作 者: 爱给模板网 2gei.cn /// 创建日期:2015-07-20 17:25:26 /// <

字符串加解密的类(VB.NET Source Code)

解密|字符串 'EZ_Crypt.vb(字符串加密和解密类) '参考NamespaceImports SystemImports Microsoft.VisualBasicImports System.CollectionsImports System.Configuration Namespace Security    Public Class Crypt    '加密字符串        Public Function Encrypt(ByVal PlainStr As String, B

Android Rsa数据加解密的介绍与使用示例_Android

Rsa加密 RSA是目前最有影响力的公钥加密算法,RSA也是第一个既能用于数据加密也能用于数字签名的算法.该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困 难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用. RSA算法原理      1.随机选择两个大质数p和q,p不等于q,计算N=pq:      2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素.

Java实现DES加解密算法解析_java

本文实例讲述了Java实现DES加解密算法解析.分享给大家供大家参考,具体如下:   简介: 数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的.通常,自动取款机(Automated Teller Machine,ATM)都使用DEA.它出自IBM的研究工作,IBM也曾对它拥有几年的专利权,但是在1983年已到期后,处于公有范围中,允许在特定条件下可以免除专利使用

Android 获取签名公钥和公钥私钥加解密的方法(推荐)_Android

如下所示: public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.g

Android Rsa数据加解密的介绍与使用示例

Rsa加密 RSA是目前最有影响力的公钥加密算法,RSA也是第一个既能用于数据加密也能用于数字签名的算法.该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困 难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用. RSA算法原理 1.随机选择两个大质数p和q,p不等于q,计算N=pq: 2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素. 3.用公式计算出d:

Android 获取签名公钥和公钥私钥加解密的方法(推荐)

如下所示: public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.g