教你在Azure存储服务中加密解密数据

2010-6-25    来源:IT168    我要评论
分享到:
| |

导读:本文介绍使用AesManaged加密算法在Azure存储服务上对数据进行加密和解密处理方法。

关键词:Azure存储服务 数据加密解密

 

  存储加密信息时应先加密后存储,存储到云中的数据也不例外,.NET 3.5提供了许多标准的加密算法,包括对称和非对称加密,对称加密比非对称加密更省资源,.NET 3.5托管的加密类都位于System.Security.Cryptography命名空间。

  我们以AesManaged类加密算法为例,AesManaged提供了AES对称加密算法实现。清单1显示了加密代码,返回Base64编码的密文。

  清单1 使用AesManaged类加密明文UTF-8字符串

  public static string Encrypt(string input)
    {
    try
    {
    // 明文字符串输入
    string data = input;
    // 转换成一个UTF-8字节数组
    byte[] utfData = UTF8Encoding.UTF8.GetBytes(data);
    byte[] saltBytes = UTF8Encoding.UTF8.GetBytes("S0d1umChl0r1de");
    // 使用PBKDF2标准产生基于密码的密钥
    Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes("K3yPassw0rd!", saltBytes);
    // AES对称加密算法
    AesManaged aes = new AesManaged();
    // 设置AES参数
    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);
    // 加密
    ICryptoTransform encryptTransf = aes.CreateEncryptor();
    // 输出流,也可以是一个FileStream(文件流)
    MemoryStream encryptStream = new MemoryStream();
    CryptoStream encryptor =
    new CryptoStream(encryptStream, encryptTransf, CryptoStreamMode.Write);
    // 写,清洗,清除和关闭加密机
    encryptor.Write(utfData, 0, utfData.Length);
    encryptor.Flush();
    encryptor.Clear();
    encryptor.Close();
    // 创建一个字节数组,将其转换成Base64编码字符串
    byte[] encryptBytes = encryptStream.ToArray();
    string encryptedString = Convert.ToBase64String(encryptBytes);
    return encryptedString;
    }
    catch (Exception exEncr)
    {
    string msg = "AES Encryption error: " + exEncr.Message;
    if (RoleManager.IsRoleManagerRunning)
    RoleManager.WriteToLog("Critical", msg);
    return input;
    }
    }

  PBKDF2是RSA实验室公钥加密标准(PKCS)的一部分,由IETF发布在RFC 2898中,PBKDF是Password-Based Key Derivation Function(基于密码的密钥生成功能)的缩写,它基于密码和salt字节数组创建一个共享的私密密钥用于加密和解密。

  使用AesManaged加密类解密的代码如下:

  清单2 使用AesManaged解密密文

  public static string Decrypt(string base64Input)
    {
    try
    {
    //byte[] encryptBytes = UTF8Encoding.UTF8.GetBytes(input);
    byte[] encryptBytes = Convert.FromBase64String(base64Input);
    byte[] saltBytes = UTF8Encoding.UTF8.GetBytes("S0d1umChl0r1de");
    // 使用PBKDF2标准产生基于密码的密钥
    Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes("K3yPassw0rd!", saltBytes);
    // AES对称加密算法
    AesManaged aes = new AesManaged();
    // 设置AES参数
    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);
    // 解密
    ICryptoTransform decryptTrans = aes.CreateDecryptor();
    // 输出流,也可以是一个FileStream(文件流)
    MemoryStream decryptStream = new MemoryStream();
    CryptoStream decryptor =
    new CryptoStream(decryptStream, decryptTrans, CryptoStreamMode.Write);
    // 写,清洗,清除和关闭加密机
    decryptor.Write(encryptBytes, 0, encryptBytes.Length);
    decryptor.Flush();
    decryptor.Clear();
    decryptor.Close();
    // 根据解密字节创建UTF字符串
    byte[] decryptBytes = decryptStream.ToArray();
    string decryptedString =
    UTF8Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
    return decryptedString;
    }
    catch (Exception exDecr)
    {
    string msg = "AES Decryption error: " + exDecr.Message;
    if (RoleManager.IsRoleManagerRunning)
    RoleManager.WriteToLog("Critical", msg);
    return base64Input;
    }
    }

原文出处:http://cloud.it168.com/a2010/0623/1069/000001069369.shtml
 
 
 
 
分享到:
 
 

云存储

 
基于云的归档正在逐步增长,而数据存储的管理者对其抱有巨大期望:有更多选择来将公司的底层基础架构进行外包。本文介绍采用云归档实现电子发现和法规遵从。
 
虽然固态存储技术目前尚未仍广为接受,其仍不失为2011年数据存储市场的明星。云存储,以及对于虚拟机的存储和备份,亦在今年各大新闻中扮演重要角色。
 
2011年,云计算不断成熟,从喧嚣阶段进入到“过度炒作”的阶段,再进入到迈向主流采用的阶段。到目前为止,云计算的发展也算顺风顺水,但是,云要做到与普通的公用服务一样可靠、容易使用,仍有好多工作要做。
 
随着云计算逐渐得到人们的接受,很多企业争先恐后地踏进这个潮流,把现有的IT架构迁移到私有云。存储架构位于私有云的核心,是CIO和云计算架构师在构架私有云时需要考虑的关键要素。
 
是不是基于云的架构和应用的进步就意味着磁带终于要消失了呢?调查现在磁带的应用,结果是否定的——不管我们听到磁带的丧钟响过多少次。

热门技术手册排行

 

“虚拟桌面”的概念的从何而来的?支持虚拟桌面的框架有哪些?云计算与虚拟桌面、云计算与SOA的关系是什么?云计算架构模型呢?如何企业考虑使用云计算,应该注意哪些事项?本手册将为您解答在这些方面的疑惑。

 

目前关于VMware vCloud Director(vCD)的相关评论有很多,但出于Beta版的试用限制,只有少数人接触了vCD的介绍材料,本技术将介绍vCloud Director的使用技巧。

 

云计算(Cloud Computing)是真实的,计算正在向云平台转移。尽管从技术的演进上来说,云计算还算不上是一次技术革命,但是,它对IT产业的影响算得上是革命性的。它不仅将影响我们应用IT的方式,更为重要的是,它很可能将引发IT产业新一轮的调整。究竟何谓云计算?它有哪些主要类型?云计算有哪些优劣势?随着云计算的逐渐推广,企业如何在维持原有预算水平不变的前提下搭建一个私有云架构来改进IT业务?本手册将对这些问题进行解答。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

从应用运行的角度来讲,云计算的性能就是网络性能、应用性能以及云计算基础架构性能的总和。云供应商只能对最后一个因素负责,而不能对前两者负责。因此,用户在衡量供应商云服务质量时必须遵循一个合适的标准。本文介绍制定云计算服务标准必要性,为了满足这一标准而需要满足的配置,以及云计算服务等级(SLA)的制定和遵从问题。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录