C#简单的加密类
1.加密
- public class EncryptHepler {
- // 验值
- static string saltValue = "XXXX";
- // 密码值
- static string pwdValue = "XXXX";
- /// <summary>
- /// 加密
- /// </summary>
- public static string Encrypt( string input ) {
- byte[ ] data = System.Text.UTF8Encoding.UTF8.GetBytes( input );
- byte[ ] salt = System.Text.UTF8Encoding.UTF8.GetBytes( saltValue );
- // AesManaged - 高级加密标准(AES) 对称算法的管理类
- System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged( );
- // Rfc2898DeriveBytes - 通过使用基于 HMACSHA1 的伪随机数生成器,实现基于密码的密钥派生功能 (PBKDF2 - 一种基于密码的密钥派生函数)
- // 通过 密码 和 salt 派生密钥
- System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes( pwdValue, salt );
- aes.BlockSize = aes.LegalBlockSizes[].MaxSize;
- aes.KeySize = aes.LegalKeySizes[].MaxSize;
- aes.Key = rfc.GetBytes( aes.KeySize / );
- aes.IV = rfc.GetBytes( aes.BlockSize / );
- // 用当前的 Key 属性和初始化向量 IV 创建对称加密器对象
- System.Security.Cryptography.ICryptoTransform encryptTransform = aes.CreateEncryptor( );
- // 加密后的输出流
- System.IO.MemoryStream encryptStream = new System.IO.MemoryStream( );
- // 将加密后的目标流(encryptStream)与加密转换(encryptTransform)相连接
- System.Security.Cryptography.CryptoStream encryptor = new System.Security.Cryptography.CryptoStream
- ( encryptStream, encryptTransform, System.Security.Cryptography.CryptoStreamMode.Write );
- // 将一个字节序列写入当前 CryptoStream (完成加密的过程)
- encryptor.Write( data, , data.Length );
- encryptor.Close( );
- // 将加密后所得到的流转换成字节数组,再用Base64编码将其转换为字符串
- string encryptedString = Convert.ToBase64String( encryptStream.ToArray( ) );
- return encryptedString;
- }
2.解密
- /// <summary>
- /// 解密
- /// </summary>
- public static string Decrypt( string input ) {
- byte[ ] encryptBytes = Convert.FromBase64String( input );
- byte[ ] salt = Encoding.UTF8.GetBytes( saltValue );
- System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged( );
- System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes( pwdValue, salt );
- aes.BlockSize = aes.LegalBlockSizes[].MaxSize;
- aes.KeySize = aes.LegalKeySizes[].MaxSize;
- aes.Key = rfc.GetBytes( aes.KeySize / );
- aes.IV = rfc.GetBytes( aes.BlockSize / );
- // 用当前的 Key 属性和初始化向量 IV 创建对称解密器对象
- System.Security.Cryptography.ICryptoTransform decryptTransform = aes.CreateDecryptor( );
- // 解密后的输出流
- System.IO.MemoryStream decryptStream = new System.IO.MemoryStream( );
- // 将解密后的目标流(decryptStream)与解密转换(decryptTransform)相连接
- System.Security.Cryptography.CryptoStream decryptor = new System.Security.Cryptography.CryptoStream(
- decryptStream, decryptTransform, System.Security.Cryptography.CryptoStreamMode.Write );
- // 将一个字节序列写入当前 CryptoStream (完成解密的过程)
- decryptor.Write( encryptBytes, , encryptBytes.Length );
- decryptor.Close( );
- // 将解密后所得到的流转换为字符串
- byte[ ] decryptBytes = decryptStream.ToArray( );
- string decryptedString = UTF8Encoding.UTF8.GetString( decryptBytes, , decryptBytes.Length );
- return decryptedString;
- }
- }//class end
C#简单的加密类的更多相关文章
- php加密类
1.需求 了解php加密类的使用 2.例子 参考ci的3.1.2的新版加密类,一个不传参,用默认加密算法,加密模式的例子 //0.加载加密类 $this->load->library('e ...
- VC++ 一个简单的Log类
在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...
- C#加密类
var es= EncryptSugar.GetInstance(); string word = "abc"; var wordEncrypt = es.Encrypto(wor ...
- PHP的AES加密类
PHP的AES加密类 aes.php <?php /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- C++ 最简单的日志类
最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...
- C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...
- Java实现一个简单的加密解密方法
Crypto是Java语言写的一个简单的加密解密方法. 使用方法: 加密方法 String cipherte=Enande.encrypt(content, pass): 解密方法 Enande.de ...
- php实现aes加密类
php实现的aes加密类,代码中有使用方法. <?php //php aes加密类 class AESMcrypt { public $iv = null; public $key = null ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
随机推荐
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...
- 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#
#10.09-11.06#200元代金券.iPad大奖, 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗 ...
- 【Android Api 翻译4】android api 完整翻译之Contacts Provider (学习安卓必知的api,中英文对照)
Contacts Provider 电话簿(注:联系人,联络人.通信录)提供者 ------------------------------- QUICKVIEW 快速概览 * Android's r ...
- iOS之block块
Block块. 1.声明Block int (^myBlock)(int n) = ^(int num) 类型 (^名称)(需要传的参数)= ^(参数) 2 __block 变量 在block块中修改 ...
- 实用技术——Eclipse 常用快捷键
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率. 和编辑相关的快捷键 Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] 此快捷键为用户编 ...
- jquery插件开发规范
一.请给你的代码加上注释 这个世界不存在百分百的完美的jquery插件,注释不止是给别人看.更重要的是给自己看. 你应该把注释当做你代码的一部分,养成随手加注释的习惯,尤其是编写javascript的 ...
- php学习笔记3--php中获取时间与实际时间不符
问题描述:在php脚本中使用date()获取服务器时间时总是与实际时间相差几个小时. 可能原因:php配置文件中时区的设置出现问题 解决方法: 方法1. php.ini文件中date.timezone ...
- part 5 Two way databinding in AngularJS
- android sdk manager 无法更新
1.在C:\Windows\System32\drivers\etc找到Hosts文件用记事本打开,在最末尾添加如下代码,保存关闭: #Google主页203.208.46.146 www.googl ...
- win7开启远程桌面
1.启用windows防火墙 计算机管理----->服务----->Windows Firewall(双击进入,启动类型改为自动,点击应用,点击启动)2.启动gpedit.msc打开“本地 ...