1.加密

  1. public class EncryptHepler {
  2. // 验值
  3. static string saltValue = "XXXX";
  4. // 密码值
  5. static string pwdValue = "XXXX";
  6.  
  7. /// <summary>
  8. /// 加密
  9. /// </summary>
  10. public static string Encrypt( string input ) {
  11. byte[ ] data = System.Text.UTF8Encoding.UTF8.GetBytes( input );
  12. byte[ ] salt = System.Text.UTF8Encoding.UTF8.GetBytes( saltValue );
  13.  
  14. // AesManaged - 高级加密标准(AES) 对称算法的管理类
  15. System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged( );
  16. // Rfc2898DeriveBytes - 通过使用基于 HMACSHA1 的伪随机数生成器,实现基于密码的密钥派生功能 (PBKDF2 - 一种基于密码的密钥派生函数)
  17. // 通过 密码 和 salt 派生密钥
  18. System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes( pwdValue, salt );
  19.  
  20. aes.BlockSize = aes.LegalBlockSizes[].MaxSize;
  21. aes.KeySize = aes.LegalKeySizes[].MaxSize;
  22. aes.Key = rfc.GetBytes( aes.KeySize / );
  23. aes.IV = rfc.GetBytes( aes.BlockSize / );
  24.  
  25. // 用当前的 Key 属性和初始化向量 IV 创建对称加密器对象
  26. System.Security.Cryptography.ICryptoTransform encryptTransform = aes.CreateEncryptor( );
  27. // 加密后的输出流
  28. System.IO.MemoryStream encryptStream = new System.IO.MemoryStream( );
  29. // 将加密后的目标流(encryptStream)与加密转换(encryptTransform)相连接
  30. System.Security.Cryptography.CryptoStream encryptor = new System.Security.Cryptography.CryptoStream
  31. ( encryptStream, encryptTransform, System.Security.Cryptography.CryptoStreamMode.Write );
  32.  
  33. // 将一个字节序列写入当前 CryptoStream (完成加密的过程)
  34. encryptor.Write( data, , data.Length );
  35. encryptor.Close( );
  36. // 将加密后所得到的流转换成字节数组,再用Base64编码将其转换为字符串
  37. string encryptedString = Convert.ToBase64String( encryptStream.ToArray( ) );
  38. return encryptedString;
  39. }

2.解密

  1. /// <summary>
  2. /// 解密
  3. /// </summary>
  4. public static string Decrypt( string input ) {
  5. byte[ ] encryptBytes = Convert.FromBase64String( input );
  6. byte[ ] salt = Encoding.UTF8.GetBytes( saltValue );
  7. System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged( );
  8. System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes( pwdValue, salt );
  9.  
  10. aes.BlockSize = aes.LegalBlockSizes[].MaxSize;
  11. aes.KeySize = aes.LegalKeySizes[].MaxSize;
  12. aes.Key = rfc.GetBytes( aes.KeySize / );
  13. aes.IV = rfc.GetBytes( aes.BlockSize / );
  14.  
  15. // 用当前的 Key 属性和初始化向量 IV 创建对称解密器对象
  16. System.Security.Cryptography.ICryptoTransform decryptTransform = aes.CreateDecryptor( );
  17. // 解密后的输出流
  18. System.IO.MemoryStream decryptStream = new System.IO.MemoryStream( );
  19.  
  20. // 将解密后的目标流(decryptStream)与解密转换(decryptTransform)相连接
  21. System.Security.Cryptography.CryptoStream decryptor = new System.Security.Cryptography.CryptoStream(
  22. decryptStream, decryptTransform, System.Security.Cryptography.CryptoStreamMode.Write );
  23. // 将一个字节序列写入当前 CryptoStream (完成解密的过程)
  24. decryptor.Write( encryptBytes, , encryptBytes.Length );
  25. decryptor.Close( );
  26.  
  27. // 将解密后所得到的流转换为字符串
  28. byte[ ] decryptBytes = decryptStream.ToArray( );
  29. string decryptedString = UTF8Encoding.UTF8.GetString( decryptBytes, , decryptBytes.Length );
  30. return decryptedString;
  31. }
  32. }//class end

C#简单的加密类的更多相关文章

  1. php加密类

    1.需求 了解php加密类的使用 2.例子 参考ci的3.1.2的新版加密类,一个不传参,用默认加密算法,加密模式的例子 //0.加载加密类 $this->load->library('e ...

  2. VC++ 一个简单的Log类

    在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...

  3. C#加密类

    var es= EncryptSugar.GetInstance(); string word = "abc"; var wordEncrypt = es.Encrypto(wor ...

  4. PHP的AES加密类

    PHP的AES加密类 aes.php <?php /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

  5. C++ 最简单的日志类

    最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...

  6. C# DES加密类,16位的加密。

    这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...

  7. Java实现一个简单的加密解密方法

    Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...

  8. php实现aes加密类

    php实现的aes加密类,代码中有使用方法. <?php //php aes加密类 class AESMcrypt { public $iv = null; public $key = null ...

  9. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

随机推荐

  1. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  2. 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#

    #10.09-11.06#200元代金券.iPad大奖, 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗 ...

  3. 【Android Api 翻译4】android api 完整翻译之Contacts Provider (学习安卓必知的api,中英文对照)

    Contacts Provider 电话簿(注:联系人,联络人.通信录)提供者 ------------------------------- QUICKVIEW 快速概览 * Android's r ...

  4. iOS之block块

    Block块. 1.声明Block int (^myBlock)(int n) = ^(int num) 类型 (^名称)(需要传的参数)= ^(参数) 2 __block 变量 在block块中修改 ...

  5. 实用技术——Eclipse 常用快捷键

    Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率. 和编辑相关的快捷键 Eclipse中有如下一些和编辑相关的快捷键.  1. [ALT+/]  此快捷键为用户编 ...

  6. jquery插件开发规范

    一.请给你的代码加上注释 这个世界不存在百分百的完美的jquery插件,注释不止是给别人看.更重要的是给自己看. 你应该把注释当做你代码的一部分,养成随手加注释的习惯,尤其是编写javascript的 ...

  7. php学习笔记3--php中获取时间与实际时间不符

    问题描述:在php脚本中使用date()获取服务器时间时总是与实际时间相差几个小时. 可能原因:php配置文件中时区的设置出现问题 解决方法: 方法1. php.ini文件中date.timezone ...

  8. part 5 Two way databinding in AngularJS

  9. android sdk manager 无法更新

    1.在C:\Windows\System32\drivers\etc找到Hosts文件用记事本打开,在最末尾添加如下代码,保存关闭: #Google主页203.208.46.146 www.googl ...

  10. win7开启远程桌面

    1.启用windows防火墙 计算机管理----->服务----->Windows Firewall(双击进入,启动类型改为自动,点击应用,点击启动)2.启动gpedit.msc打开“本地 ...