`
niunan
  • 浏览: 701170 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

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

    博客分类:
  • .NET
阅读更多
  视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!
  /// <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();
        }

测试效果:

  • 大小: 27.7 KB
分享到:
评论
2 楼 niunan 2009-07-22  
猜对了,嘿嘿。
1 楼 沉子风 2009-07-22  
这好像是审计软件的代码,我最近也在看这个视频。

相关推荐

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

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

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

    主要为大家详细介绍了C#字符串使用密钥进行加解密的代码,C#字符串加密和解密实现代码,感兴趣的小伙伴们可以参考一下

    c# 加密和解密相关代码

    else if (UnicodeChar &gt;= 110 && UnicodeChar ) //对字符进行解密 { UnicodeChar = UnicodeChar - 13; } else if (UnicodeChar &gt;= 65 && UnicodeChar ) //对字符进行加密 { UnicodeChar = UnicodeChar + 13; } else ...

    加密连接字符串

    C#2010用于D_E_S解密和加密的工具,可对APP.CONFIG数据库连接加密,然后再在程序内部解密,而你只要保护好密钥就可以对客户端安全的加入app.config,也可方便更新连接服务器的密码。

    unity-crypto:AES加密解密功能

    AES加密和解密字符串(和/或序列化)数据 如何使用它。 直接从代码调用:SimpleAESEncryption.Encrypt和SimpleAESEncryption.Decrypt AES加密如何工作? 当使用AES使用密码对某些明文进行加密时,会同时生成加密...

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

    // 解密成功返回解密后的字符串,失败返源串 public static string DecryptDES(string decryptString, string decryptKey) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte[] rgbIV = ...

    加密结果不同,解密结果相同的AES加密类

    C# .Net 2005 AES加密类,通过在需要加密的字符串前后各加特定长度的系统当前时间值来达到对同一个字符串每次加密结果都不一样的目的。解密时忽略添加的的字符从而得到原来的字符串。支持128位、196位和256位加密;...

    Android与其他系统间DES加密解密的处理经验

    C#系统采用DES加密字符串,Android用DES解密就是不成功,从网上搜了许多源码都不能用,深入研究加密流程及算法是没有时间的。 网上搜的源码大都使用系统默认的加密模式,当我们对这些参数不了解时,就会浪费许多时间...

    打败所有黑客的加密算法

    或者黑客可以对其陷阱预设解密方法和密钥,一旦检测到就进行解密。所以你最好自己对信息加密! 现在问题是,黑客对你信息不能解密的放过,能够解密的再留下破解。你的信息仍然处于危险之中。于是有了我现在所说的...

Global site tag (gtag.js) - Google Analytics