zoukankan      html  css  js  c++  java
  • 潜移默化学会WPF(安全篇<二>)C#对称加密算法

     1 private SymmetricAlgorithm mobjCryptoService;
    2 private string Key; 
    3 ///// <summary>  
    4 ///// 对称加密类的构造函数 
    5 ///// </summary>
    6 public SymmetricMethod()  {
    7 mobjCryptoService = new RijndaelManaged();  
    8 Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";  
    9 }
    10  /// <summary> 
    11 /// 获得密钥 
    12 /// </summary>
    13 /// <returns>密钥</returns> 
    14 private byte[] GetLegalKey()  
    15 {   string sTemp = Key;   mobjCryptoService.GenerateKey();  
    16 byte[] bytTemp = mobjCryptoService.Key;   int KeyLength = bytTemp.Length; 
    17 if (sTemp.Length > KeyLength)    sTemp = sTemp.Substring(0, KeyLength);  
    18 else if (sTemp.Length < KeyLength)    sTemp = sTemp.PadRight(KeyLength, ' ');  
    19   return ASCIIEncoding.ASCII.GetBytes(sTemp); 
    20 }
    21 /// <summary> 
    22 /// 获得初始向量IV  
    23 /// </summary>  
    24 /// <returns>初试向量IV</returns> 
    25 private byte[] GetLegalIV()  {
    26  string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk"
    27 mobjCryptoService.GenerateIV();
    28 byte[] bytTemp = mobjCryptoService.IV;  
    29 int IVLength = bytTemp.Length;  
    30 if (sTemp.Length > IVLength)  
    31 sTemp = sTemp.Substring(0, IVLength);  
    32 else if (sTemp.Length < IVLength)   
    33 sTemp = sTemp.PadRight(IVLength, ' ');  
    34 return ASCIIEncoding.ASCII.GetBytes(sTemp); 
    35 }
    36
    37 /// <summary> 
    38 /// 加密方法
    39 /// </summary>
    40 ///<param name="Source">待加密的串</param>  
    41 /// <returns>经过加密的串</returns> 
    42 public string Encrypto(string Source)  {  
    43 byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source); 
    44 MemoryStream ms = new MemoryStream(); 
    45 mobjCryptoService.Key = GetLegalKey();   
    46 mobjCryptoService.IV = GetLegalIV();  
    47 ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); 
    48 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);  
    49 cs.Write(bytIn, 0, bytIn.Length);   
    50 cs.FlushFinalBlock();  
    51 ms.Close(); 
    52 byte[] bytOut = ms.ToArray(); 
    53 return Convert.ToBase64String(bytOut); 
    54 }
    55
    56
    59 /// <summary> 
    60 ///  解密方法
    61 ///   </summary>  
    62 /// <param name="Source">待解密的串</param>  
    63 /// <returns>经过解密的串</returns> 
    64 public string Decrypto(string Source) 
    65 {  
    66 byte[] bytIn = Convert.FromBase64String(Source); 
    67 MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);  
    68 mobjCryptoService.Key = GetLegalKey(); 
    69 mobjCryptoService.IV = GetLegalIV();  
    70 ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); 
    71 CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);  
    72   StreamReader sr = new StreamReader(cs);
    73 return sr.ReadToEnd();
    74 }

    怎么用,如果你懂基本的C#语法应该都会用,我相信你

  • 相关阅读:
    flask数据库操作
    flask之--钩子,异常,上下文,flask-script,模板,过滤器,csrf_token
    Flask项目出现html文件无法自动补全
    pandas强化练习(美国交警开放的数据)
    flask初识
    爬取实时变化的 WebSocket 数据(转载)
    pep8规范
    模拟登陆
    关于在scrapy中使用xpath
    Java基础/利用fastjson序列化对象为JSON
  • 原文地址:https://www.cnblogs.com/AaronYang/p/2436036.html
Copyright © 2011-2022 走看看