zoukankan      html  css  js  c++  java
  • TripleDESCryptoServiceProvider CryptoStream

    using System.Security.Cryptography;
    
     static void Main(string[] args)
            {
                string rawString = "Make every second count.";
                string encryptedString = Encrypt3DES(rawString);
                string decryptedString = Decrypt3DES(encryptedString);
                Console.WriteLine($"Raw:{rawString}
    encrypted:{encryptedString}
    decrypted:{decryptedString}");
                Console.ReadLine();
            }
    
            public static string Encrypt3DES(string rawString, string encryptKey = "serenityserenityserenityserenity", string encryptIv = "04D4DA042DE=")
            {
                using (SymmetricAlgorithm tripleDesProvider = new TripleDESCryptoServiceProvider())
                {
                    try
                    {
                        tripleDesProvider.Key = Convert.FromBase64String(encryptKey);
                        tripleDesProvider.IV = Convert.FromBase64String(encryptIv);
                        tripleDesProvider.Mode = System.Security.Cryptography.CipherMode.CBC;
                        tripleDesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                        using (ICryptoTransform ct = tripleDesProvider.CreateEncryptor(tripleDesProvider.Key, tripleDesProvider.IV))
                        {
                            byte[] bytes = Encoding.UTF8.GetBytes(rawString);
                            using (MemoryStream ms = new MemoryStream())
                            {
                                using (CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write))
                                {
                                    cs.Write(bytes, 0, bytes.Length);
                                    cs.FlushFinalBlock();
                                    cs.Close();
                                    string result = Convert.ToBase64String(ms.ToArray());
                                    return result;
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }
                }
            }
    
            public static string Decrypt3DES(string rawString, string encryptKey = "serenityserenityserenityserenity", string encryptIv = "04D4DA042DE=")
            {
                using (SymmetricAlgorithm tripleDesProvider = new TripleDESCryptoServiceProvider())
                {
                    try
                    {
                        tripleDesProvider.Key = Convert.FromBase64String(encryptKey);
                        tripleDesProvider.IV = Convert.FromBase64String(encryptIv);
                        tripleDesProvider.Mode = System.Security.Cryptography.CipherMode.CBC;
                        tripleDesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
                        using (ICryptoTransform ct = tripleDesProvider.CreateDecryptor(tripleDesProvider.Key, tripleDesProvider.IV))
                        {
                            byte[] bytes = Convert.FromBase64String(rawString);
                            using (MemoryStream ms = new MemoryStream())
                            {
                                using (CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write))
                                {
                                    cs.Write(bytes, 0, bytes.Length);
                                    cs.FlushFinalBlock();
                                    cs.Close(); 
                                    string result = Encoding.UTF8.GetString(ms.ToArray());
                                    return result;
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }
                }
            }
  • 相关阅读:
    基本數據類型
    5月28号 垃圾回收机制
    5月28 基本运算符
    5月30日 循环之while循环
    5月28号 与用户交互
    5月31日 基本数据类型(列表类型 字典类型 元组)及其内置方法
    5月30号 基本数据类型(整数型 字符串类型)及其内置方法
    變量
    5月29日 学习笔记 可变不可变类型 成员运算符和身份运算符 条件 流程控制之if判断
    关于Flash CS4字体不能加粗的问题[附解决方法]
  • 原文地址:https://www.cnblogs.com/Fred1987/p/12522676.html
Copyright © 2011-2022 走看看