c# Des-ECB加解密记录

MD5加密:

/// <summary>
/// 16位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt16(string paramToEncrypt)
{
    var md5 = new MD5CryptoServiceProvider();
    string encryptedStr = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(paramToEncrypt)), 4, 8);
    encryptedStr = encryptedStr .Replace("-", "");
    return encryptedStr ;
}


/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt32(string password)
{
    string cl = password;
    string pwd = "";
    MD5 md5 = MD5.Create(); //实例化一个md5对像
    // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
    byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
    // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
    for (int i = 0; i < s.Length; i++)
    {
        // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
        pwd = pwd + s[i].ToString("X");
    }
    return pwd;
}

DES加解密:

        /// <summary>
        /// Des ecb encrypt, ecb no need iv
        /// </summary>
        /// <param name="encryptString">待加密字符串</param>
        /// <param name="sKey">加密密钥</param>
        /// <returns></returns>
        public static string DesEncrypt_ECB(string encryptString, string sKey)
        {
            try
            {
                string key;
                //密钥为8位
                if (sKey.Length <= 8)
                    key = sKey.PadRight(8, '0');
                else
                    key = sKey.Substring(0, 8);

                byte[] keyBytes = Encoding.UTF8.GetBytes(key);
                byte[] encryptBytes = Encoding.UTF8.GetBytes(encryptString);

                DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider
                {
                    // 使用ECB方式
                    Mode = CipherMode.ECB,
                    // PKCS7padding
                    Padding = PaddingMode.PKCS7,
                    Key = keyBytes
                };

                using MemoryStream memStream = new MemoryStream();
                using CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(), CryptoStreamMode.Write);
                
                crypStream.Write(encryptBytes, 0, encryptBytes.Length);
                crypStream.FlushFinalBlock();
                
                return Convert.ToBase64String(memStream.ToArray());
            }
            catch(Exception ex)
            {
                return ex.Message;
            }
        }


        /// <summary>
        /// Des ecb decrypt
        /// </summary>
        /// <param name="decryptString"></param>
        /// <param name="sKey"></param>
        /// <returns></returns>
        public static string DesDecrypt_ECB(string decryptString, string sKey)
        {
            //key为8位
            string key;
            if (sKey.Length <= 8) 
                key = sKey.PadRight(8, '0');
            else
                key = sKey.Substring(0, 8);

            byte[] keyBytes = Encoding.UTF8.GetBytes(key);

            byte[] inputByteArray = Convert.FromBase64String(decryptString);

            DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider
            {
                Mode = CipherMode.ECB,
                Key = keyBytes
            };

            using MemoryStream memStream = new MemoryStream();
            using CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateDecryptor(), CryptoStreamMode.Read);
            
            crypStream.Write(inputByteArray, 0, inputByteArray.Length);
            crypStream.FlushFinalBlock();

            return Encoding.Default.GetString(memStream.ToArray());
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值