DESCryptoServiceProvider 不同的key 得到相同的加密结果

今天在测试加密算法的时候,发现不同的key 尽然可以得到相同的加密结果, 不是很理解,在此留下笔记,

        Byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
        Encoding encoding = Encoding.UTF8;
        string encryptKey="znyuVmdvl8Q=";
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="algorithm">加密算法</param>
        /// <param name="encryptBytes">要加密的字节序列</param>
        /// <returns>返回加密的字节序列</returns>
        public byte[] Encrypt(SymmetricAlgorithm algorithm, byte[] encryptBytes)
        {
            byte[] cipherTextBytes = null;
            try
            {
                using (MemoryStream m_stream = new MemoryStream())
                {
                    //数据流链接加密流
                    using (CryptoStream m_cstream =
                        new CryptoStream(m_stream,
                           // algorithm.CreateEncryptor(Convert.FromBase64String(encryptKey), rgbIV),
                           algorithm.CreateEncryptor(encoding.GetBytes(encryptKey), rgbIV),
                            CryptoStreamMode.Write))
                    {
                        m_cstream.Write(encryptBytes, 0, encryptBytes.Length);
                        m_cstream.FlushFinalBlock();
                        cipherTextBytes = m_stream.ToArray();
                    }
                }
            }
             catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //释放资源
                algorithm.Clear();
            }
            return cipherTextBytes;
        }
 /// <summary>
        /// DES 加密(数据加密标准,速度较快,适用于加密大量数据的场合
        /// </summary>
        /// <param name="encryptStr">待加密的密文</param>
        /// <returns>返回加密的字符串</returns>
        public string DESEncrypt(string encryptStr)
        {
            //检查数据
            if (string.IsNullOrEmpty(encryptStr))
            {
                throw (new Exception("密文不得为空"));
            }
            //实例化加密算法
            DESCryptoServiceProvider m_DESProvider = new DESCryptoServiceProvider();

            //将要加密的字符串编码成一个字节序列
            byte[] m_btEncryptStr = encoding.GetBytes(encryptStr);

            //将加密返回的字节序列转化成字符串
            byte[] m_bts = Encrypt(m_DESProvider, m_btEncryptStr);
            string m_strEncrypt = Convert.ToBase64String(m_bts);
            string mm = encoding.GetString(m_bts);
            return m_strEncrypt;
        }

调用

DESEncrypt("123456")

当设置 encryptKey的值为sdfsdfef  或 sdfsdfdf时 得到的加密结果一样: zf+DyH2Uiug=

转载于:https://www.cnblogs.com/devep/archive/2011/10/10/2205732.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值