译文地址:http://www.codeproject.com/Tips/872826/Encrypt-Decrypt-Cookies-in-ASP-NET

源代码:http://files.cnblogs.com/files/yplong/ShanuBasicCSharpOOPConceptV1.4.zip

简介:

在这个话题中,我将说明如何加密和解密cookies的值。cookies是一个在浏览器端存储值的text文件。作为cookies存储在一个简单的text文件中,很容易被读取和修改cookies内容。

然而你可以对cookies进行加密和解密来达到一定的安全性。本文中我们将使用"MachineKey.Protect” 和 “MachineKey.Unprotect”两个方法来加密和解密。

MachineKey.Protect() MachineKey.Unprotect() 是应用在ASP.NET4.5中。这两个方法需要2个参数,第一个参数就是要进行加密和解密的内容文件的字节形式,第二个参数就是目的。目的就像一个键(key),可以是字符串类型的值。我们需要通过相同的目的值来对值进行加保护和解保护。

源码设计:

 <div>
<asp:TextBox ID="txtvalue" runat="server"
placeholder="Enter Some Text" Width="">
</asp:TextBox><br />
<asp:Label runat="server" ID="lblmsg" ForeColor="Green"
Font-Bold="true"></asp:Label><br />
<asp:Button ID="btnEncrypt"
runat="server" Text="Encrypt"
OnClick="btnEncrypt_Click" />
<asp:Button ID="btnDecrypt" runat="server" Text="Decrypt"
OnClick="btnDecrypt_Click" Style="height: 26px" />
</div>

代码的实际操作:
使用命名空间:

 //using System.Text;
//using System.Web.Security; protected void btnEncrypt_Click(object sender, EventArgs e)
{
var cookieText = Encoding.UTF8.GetBytes(txtvalue.Text);
var encryptedValue = Convert.ToBase64String(MachineKey.Protect(cookieText, "ProtectCookie")); //--- Create cookie object and pass name of the cookie and value to be stored.
HttpCookie cookieObject = new HttpCookie("NameOfCookie", encryptedValue); //---- Set expiry time of cookie.
cookieObject.Expires.AddDays(); //---- Add cookie to cookie collection.
Response.Cookies.Add(cookieObject);
lblmsg.Text = encryptedValue;
}
protected void btnDecrypt_Click(object sender, EventArgs e)
{
var bytes = Convert.FromBase64String(Request.Cookies["NameOfCookie"].Value);
var output = MachineKey.Unprotect(bytes, "ProtectCookie");
string result = Encoding.UTF8.GetString(output);
lblmsg.Text = result;
}

ASP.NET 4.0中:

加密:

 var plaintextBytes = Encoding.UTF8.GetBytes("Jitendra Gangwar");
var encryptedValue = MachineKey.Encode(plaintextBytes, MachineKeyProtection.All);
Response.Write(encryptedValue.ToString());

解密:

 var decryptedBytes = MachineKey.Decode(encryptedValue, MachineKeyProtection.All);
var decryptedValue = Encoding.UTF8.GetString(decryptedBytes);
Response.Write(decryptedValue);

输出:

译:在ASP.NET中如何对cookies进行加密和解密的更多相关文章

  1. Python中的Base64编码的加密与解密

    Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64 ...

  2. Python中crypto模块进行AES加密和解密

    #coding: utf8 import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class p ...

  3. asp.net MVC ajax 请求参数前台加密后台解密

    最近有一个需求要求页面查询数据库,查询内容保存到excel里面作为附件加密打包下载.查询的sql作为参数传入后台,实现加密提交.这里做个记录,后面用到直接来拿. 控制器 public ActionRe ...

  4. java spring中对properties属性文件加密及其解密

    http://blog.csdn.net/yaerfeng/article/details/26561791

  5. (译)利用ASP.NET加密和解密Web.config中连接字符串

    介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, A ...

  6. 利用ASP.NET加密和解密Web.config中连接字符串

    摘自:博客园 介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Se ...

  7. ASP.NET数据库连接字符串的加密与解密

    ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: ...

  8. .net中加密与解密

    .Net中的加密解密 引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全.本文将简单地介绍了加密解密的一些概念,以及相关的数字签名.证书,最后介绍了如何在.NET中对数据进行对称 ...

  9. 在C#中使用RSA进行加密和解密

    这篇文章向您展示了如何在c#.net Windows窗体应用程序中使用RSA算法对字符串进行加密和解密.RSA是由Ron Rivest,Adi Shamir和Leonard Adleman开发的非对称 ...

随机推荐

  1. 如何解决ASP.NET网站'__doPostBack' is undefined的脚本错误

    最近碰到一个很奇怪的问题! 新发布一个ASP.NET的网站,基于.net 4.0 framework,基本没有用到什么特别新的技术,但是由于给客户预览用的服务器比较老,操作系统用的是Windows 2 ...

  2. js获取url传递参数

    <head> <meta charset="UTF-8"> <title></title> <script type=&quo ...

  3. phpcms v9二次开发笔记

    phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...

  4. windows下安装mingw

    windows环境下使用gcc MinGw是Minimal GNU on Windows的缩写,允许在GNU/linux和windows平台生成本地的windows程序而不需要第三方运行时库.本文主要 ...

  5. paip.提升效率---提升绑定层次--form绑定取代field绑定

    paip.提升效率---提升绑定层次--form绑定取代field绑定 =================== 编辑form中,常常需要,绑定一个对象到个form..   传统上要绑定field开始. ...

  6. 从MySQL 5.5到5.7看复制的演进

    概要:MySQL 5.5 支持单线程模式复制,MySQL 5.6 支持库级别的并行复制,MySQL 5.7 支持事务级别并行复制.结合这个主线我们可以来分析一下MySQL以及社区发展的一个前因后果. ...

  7. Oracle 函数中动态执行语句

    函数: 1 create or replace function fn_test(tablename in varchar2) return number is sqls ); rtn ):; beg ...

  8. gulp学习笔记1

    gulp系列学习笔记: 1.gulp学习笔记1 2.gulp学习笔记2 3.gulp学习笔记3 4.gulp学习笔记4 1.安装gulp 首先我们需要node环境,nodejs安装这里就不说了,不懂的 ...

  9. mysql组合索引与字段顺序

    很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符. 看下面的例子:假设有一 ...

  10. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...