C# DES (ECB模式) 加密解密 –单倍长「建议收藏」

C# DES (ECB模式) 加密解密 –单倍长

大家好,又见面了,我是全栈君。

加密:  调用时: Encrypt_DES16(“2AF349243535BCD3”, “1111111111111111”);

 public static string Encrypt_DES16(string str_in_data, string str_DES_KEY) //数据为十六进制
        {
            try
            {
                byte[] shuju = new byte[8];
                byte[] keys = new byte[8];
                for (int i = 0; i < 8; i++)
                {
                    shuju[i] = Convert.ToByte(str_in_data.Substring(i * 2, 2), 16);
                    keys[i] = Convert.ToByte(str_DES_KEY.Substring(i * 2, 2), 16);
                }
                DES desEncrypt = new DESCryptoServiceProvider();
                desEncrypt.Mode = CipherMode.ECB;
                //desEncrypt.Key = ASCIIEncoding.ASCII.GetBytes(str_DES_KEY);
                desEncrypt.Key = keys;
                byte[] Buffer;
                Buffer = shuju;//ASCIIEncoding.ASCII.GetBytes(str_in_data);
                ICryptoTransform transForm = desEncrypt.CreateEncryptor();
                byte[] R;
                R = transForm.TransformFinalBlock(Buffer, 0, Buffer.Length);
                string return_str = "";
                foreach (byte b in R)
                {
                    return_str += b.ToString("X2");
                }
                return_str = return_str.Substring(0, 16);
                return return_str;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

解密:调用时: Encrypt_DES16(“C47EC89B0A247A47”, “1111111111111111”);

 //DES解密
        public static string Decrypt_DES16(string str_in_data, string str_DES_KEY)//数据和密钥为十六进制
        {
            byte[] shuju = new byte[8];
            byte[] keys = new byte[8];
            for (int i = 0; i < 8; i++)
            {
                shuju[i] = Convert.ToByte(str_in_data.Substring(i * 2, 2), 16);
                keys[i] = Convert.ToByte(str_DES_KEY.Substring(i * 2, 2), 16);
            }
            DES desDecrypt = new DESCryptoServiceProvider();
            desDecrypt.Mode = CipherMode.ECB;
            desDecrypt.Key = keys;
            desDecrypt.Padding = System.Security.Cryptography.PaddingMode.None;
            byte[] Buffer = shuju;
            ICryptoTransform transForm = desDecrypt.CreateDecryptor();
            byte[] R;
            R = transForm.TransformFinalBlock(Buffer, 0, Buffer.Length);
            string return_str = "";
            foreach (byte b in R)
            {
                return_str += b.ToString("X2");
            }
            return return_str;
        }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115214.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号