首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一个对称加密解密的有关问题,根据给出的解密方法,写出相对应的加密的方法

2013-08-11 
请教大家一个对称加密解密的问题,根据给出的解密方法,写出相对应的加密的方法本帖最后由 fhgok 于 2013-08

请教大家一个对称加密解密的问题,根据给出的解密方法,写出相对应的加密的方法
本帖最后由 fhgok 于 2013-08-09 23:52:32 编辑 请教大家一个对称加密解密的问题,请根据给出的解密方法DecryptorMethod,写出相对应的加密的方法,解密方法如下:


        /// <summary>
        /// 解密文件内容
        /// </summary>
        /// <param name="infile">传入的待解密的文件路径</param>
        /// <param name="decryptKey">string decryptKey = "12345768";</param>
        /// <param name="Keys">byte[] Keys = new byte[] { 83, 40, 69, 40, 56, 39, 50, 74 };</param>
        /// <returns></returns>
        public string DecryptorMethod(string infile, string decryptKey, byte[] Keys)
        {
            string str = "";
            if (infile != string.Empty)
            {
                try
                {
                    using (FileStream stream = new FileStream(infile, FileMode.Open, FileAccess.Read))
                    {
                        DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                        byte[] bytes = Encoding.UTF8.GetBytes(decryptKey);
                        byte[] rgbIV = Keys;
                        ICryptoTransform transform = provider.CreateDecryptor(bytes, rgbIV);
                        using (CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Read))


                        {
                            byte[] buffer = new byte[stream.Length];
                            stream2.Read(buffer, 0, buffer.Length);
                            stream2.Flush();
                            for (int i = buffer.Length - 1; i > 0; i--)
                            {
                                if (buffer[i] != 0)
                                {
                                    break;
                                }
                            }
                            return Encoding.UTF8.GetString(buffer);
                        }
                    }
                }
                catch
                {


                    str = "读取文件失败";
                }
            }
            return str;
        }

对称加密解密
[解决办法]
很标准的DES API,很简单的,随便查一下API就可以搞定的
[解决办法]
decryptKey?是什么 密钥么?
我记得好像直接有现成的方法的啊。
[解决办法]
解密里面那个循环没一点用,我给你屏蔽了
 /// <summary>
        /// 加密
        /// </summary>
        /// <param name="EnctryStr">待加密字符串</param>
        /// <param name="decryptKey">string decryptKey = "12345768";</param>
        /// <param name="Keys">byte[] Keys = new byte[] { 83, 40, 69, 40, 56, 39, 50, 74 };</param>
        private void EnctryMethod(string EnctryStr, string decryptKey, byte[] Keys)
        {
            using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
            {
                byte[] bEncrypt = Encoding.UTF8.GetBytes(EnctryStr);
                MemoryStream ms = new System.IO.MemoryStream();
                byte[] bytes = Encoding.UTF8.GetBytes(decryptKey);


                byte[] rgbIV = Keys;
                ICryptoTransform transform = provider.CreateEncryptor(bytes, rgbIV);
                using (CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
                {
                    cs.Write(bEncrypt, 0, bEncrypt.Length);
                    cs.FlushFinalBlock();
                    cs.Close();
                }

                byte[] Buffer = ms.ToArray();
                ms.Close();
                string path = @"D:\a.txt";
                using (FileStream streamWrite = new FileStream(path, FileMode.Create, FileAccess.Write))
                {
                    streamWrite.Write(Buffer, 0, Buffer.Length);
                }  
            }                   
        }
        /// <summary>
        /// 解密文件内容
        /// </summary>
        /// <param name="infile">传入的待解密的文件路径</param>
        /// <param name="decryptKey">string decryptKey = "12345768";</param>
        /// <param name="Keys">byte[] Keys = new byte[] { 83, 40, 69, 40, 56, 39, 50, 74 };</param>


        /// <returns></returns>
        public string DecryptorMethod(string infile, string decryptKey, byte[] Keys)
        {
            string str = "";
            if (infile != string.Empty)
            {
                try
                {
                    using (FileStream stream = new FileStream(infile, FileMode.Open, FileAccess.Read))
                    {
                        DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                        byte[] bytes = Encoding.UTF8.GetBytes(decryptKey);
                        byte[] rgbIV = Keys;
                        ICryptoTransform transform = provider.CreateDecryptor(bytes, rgbIV);
                        using (CryptoStream stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Read))
                        {
                            byte[] buffer = new byte[stream.Length];
                            stream2.Read(buffer, 0, buffer.Length);
                            stream2.Flush();


                            //for (int i = buffer.Length - 1; i > 0; i--)
                            //{
                            //    if (buffer[i] != 0)
                            //    {
                            //        break;
                            //    }
                            //}
                            return Encoding.UTF8.GetString(buffer);
                        }
                    }
                }
                catch
                {
                    str = "读取文件失败";
                }
            }
            return str;
        }

热点排行