当前位置:  编程技术>.net/c#/asp.net

C#简单的加密类实例

    来源: 互联网  发布时间:2014-10-16

    本文导语:  代码如下:public static class EncryptAndDecrypt     {         //加密         public static string Encrypt(string input)         {             // 盐值             string saltValue = "saltValue";             // 密码值    ...

代码如下:

public static class EncryptAndDecrypt
     {
         //加密
         public static string Encrypt(string input)
         {
             // 盐值
             string saltValue = "saltValue";
             // 密码值
             string pwdValue = "pwdValue";
             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);
             /**/
             /*
          * AesManaged.BlockSize - 加密操作的块大小(单位:bit)
          * AesManaged.LegalBlockSizes - 对称算法支持的块大小(单位:bit)
          * AesManaged.KeySize - 对称算法的密钥大小(单位:bit)
          * AesManaged.LegalKeySizes - 对称算法支持的密钥大小(单位:bit)
          * AesManaged.Key - 对称算法的密钥
          * AesManaged.IV - 对称算法的密钥大小
          * Rfc2898DeriveBytes.GetBytes(int 需要生成的伪随机密钥字节数) - 生成密钥
          */
             aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
             aes.KeySize = aes.LegalKeySizes[0].MaxSize;
             aes.Key = rfc.GetBytes(aes.KeySize / 8);
             aes.IV = rfc.GetBytes(aes.BlockSize / 8);
             // 用当前的 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, 0, data.Length);
             encryptor.Close();
             // 将加密后所得到的流转换成字节数组,再用Base64编码将其转换为字符串
             string encryptedString = Convert.ToBase64String(encryptStream.ToArray());
             return encryptedString;
         }

 
         #region silverlight密码解密
         /**/
         ///
         /// 解密数据
         ///
         /// 加密后的字符串
         /// 加密前的字符串
         public static string Decrypt(string input)
         {
             // 盐值(与加密时设置的值一致)
             string saltValue = "saltValue";
             // 密码值(与加密时设置的值一致)
             string pwdValue = "pwdValue";
             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[0].MaxSize;
             aes.KeySize = aes.LegalKeySizes[0].MaxSize;
             aes.Key = rfc.GetBytes(aes.KeySize / 8);
             aes.IV = rfc.GetBytes(aes.BlockSize / 8);
             // 用当前的 Key 属性和初始化向量 IV 创建对称解密器对象
             System.Security.Cryptography.ICryptoTransform decryptTransform = aes.CreateDecryptor();
             // 解密后的输出流
             MemoryStream decryptStream = new MemoryStream();
             // 将解密后的目标流(decryptStream)与解密转换(decryptTransform)相连接
             System.Security.Cryptography.CryptoStream decryptor = new System.Security.Cryptography.CryptoStream(
                 decryptStream, decryptTransform, System.Security.Cryptography.CryptoStreamMode.Write);
             // 将一个字节序列写入当前 CryptoStream (完成解密的过程)
             decryptor.Write(encryptBytes, 0, encryptBytes.Length);
             decryptor.Close();
             // 将解密后所得到的流转换为字符串
             byte[] decryptBytes = decryptStream.ToArray();
             string decryptedString = UTF8Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
             return decryptedString;
         }
         #endregion
     }

    
 
 

您可能感兴趣的文章:

  • c#实现md5加密示例
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# DES加密算法中向量的作用详细解析
  • C#生成加密的16位随机数的代码
  • C#中字符串的加密的源码
  • C# 256 位 AES 加密与解密文件的实现代码
  • C#使用伪随机数实现加密用户密码的方法 iis7站长之家
  • c# rsa注册实现加密文字
  • c#编写可逆加密类(3DES加密)的教程
  • c#实现加密与解密的实例代码
  • C#对字符串加密与解密的一例代码
  • C#使用伪随机数实现加密用户密码的方法
  • C#实现对AES加密和解密的方法
  • c#实现MD5 加密与解密的代码
  • 基于私钥加密公钥解密的RSA算法C#实现方法
  • c# 图片加密解密的实例代码
  • des加密解密源码 C# key值问题分析
  • C#的3DES加密解密算法实例代码
  • c#文本加密程序代码示例
  • C#加密算法 六种C#加密算法分享
  • 寻求java加密算法及实例
  • python中的hashlib和base64加密模块使用实例
  • 一组PHP可逆加密解密算法实例代码
  • java实现MD5加密算法的实例代码
  • php加密解密函数authcode实例解析
  • java中使用DES加密解密实例
  • Android之RAS加密算法测试实例
  • discuz加密与解密函数authcode实例介绍
  • des加密解密JAVA与.NET互通实例
  • C++实现DES加密算法实例解析
  • C#加密解密类实例程序
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • WinDows8最新版文件夹加密
  • linux和unix怎么样加密口令的?为什么密码一样,加密后的不一样?
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • 请问,如何在作数据备份的时候,对打包的数据文件自动加密?然后这个密码又如何加密呢?
  • 在unix系统(freebsd)下面用md5加密中文,和win2000下用md5加密后的结果是否一样?
  • 求对称加密DES算法与非对称加密RSA算法!(可用)
  • 使用java自带des加密算法实现文件加密和字符串加密
  • 非常着急,关于DES加密的,用java加密过的字符串,药用Linux下的C语言来解密,涉及到补位的问题,弄了几天都没有实现,有高手会的,请指点一二!!!!!!!!
  • php加密算法之实现可逆加密算法和解密分享
  • 实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
  • 关于linux下的文件加密传输。
  • java加密算法分享(rsa解密、对称加密、md5加密)
  • Oracle定义DES加密解密及MD5加密函数示例
  • DES加密的问题!!
  • 求指导~~关于文件加密的
  • 关于加密算法的效率问题
  • PHP源码加密工具 SourceCop
  • 关于RC4加密算法的疑问
  • 怎么用java现实文件加密之后上传???
  • Java加密包 Jasypt
  • linux下对文件加密


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3