译:在ASP.NET中如何对cookies进行加密和解密

译文地址: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),可以是字符串类型的值。我们需要通过相同的目的值来对值进行加保护和解保护。

源码设计:

 1 <div>
 2     <asp:TextBox ID="txtvalue" runat="server"
 3     placeholder="Enter Some Text" Width="250">
 4     </asp:TextBox><br />
 5     <asp:Label runat="server" ID="lblmsg" ForeColor="Green"
 6     Font-Bold="true"></asp:Label><br />
 7     <asp:Button ID="btnEncrypt"
 8                 runat="server" Text="Encrypt"
 9                 OnClick="btnEncrypt_Click" />
10     <asp:Button ID="btnDecrypt" runat="server" Text="Decrypt"
11     OnClick="btnDecrypt_Click" Style="height: 26px" />
12 </div>

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

 1 //using System.Text;
 2 //using System.Web.Security;
 3
 4 protected void btnEncrypt_Click(object sender, EventArgs e)
 5     {
 6         var cookieText = Encoding.UTF8.GetBytes(txtvalue.Text);
 7         var encryptedValue = Convert.ToBase64String(MachineKey.Protect(cookieText, "ProtectCookie"));
 8
 9         //--- Create cookie object and pass name of the cookie and value to be stored.
10         HttpCookie cookieObject = new HttpCookie("NameOfCookie", encryptedValue);
11
12         //---- Set expiry time of cookie.
13         cookieObject.Expires.AddDays(5);
14
15         //---- Add cookie to cookie collection.
16         Response.Cookies.Add(cookieObject);
17         lblmsg.Text = encryptedValue;
18     }
19     protected void btnDecrypt_Click(object sender, EventArgs e)
20     {
21         var bytes = Convert.FromBase64String(Request.Cookies["NameOfCookie"].Value);
22         var output = MachineKey.Unprotect(bytes, "ProtectCookie");
23         string result = Encoding.UTF8.GetString(output);
24         lblmsg.Text = result;
25     }

ASP.NET 4.0中:

加密:

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

解密:

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

输出:

时间: 2024-10-10 05:37:26

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

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

原创整理不易,转载请注明出处:java spring中对properties属性文件加密及其解密 代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm 加密类: package com.zuidaima.commons.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import

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

Base64 可以干些啥? Base64编码的作用: 由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法. 图片(and种子)base64编码传输 一种常用的内容快速加密方法(不安全,防君子不防小人) 为什么要使用 Base64 编码? 在网页图片传输中,一般在处理极小.极简的一些图片的时候可以使用到base64编码将图片直接写入css文件展示到网站上. 快速加密,常用与邮件内容传输,网站简单内容加密,跟MD5加密算法的区别在于这种算

asp.net和java这间des加密和解密

最近有个新项目用java做的,老项目是asp.net,接口传输需要des加解密,网上查了些资料,大多数不能拿来就用,自己经过调试加工了一下,具体代码如下: 密钥一定是8位 /// <summary> /// 利用DES加密算法加密字符串(可解密) /// </summary> /// <param name="pToEncrypt">被加密的字符串</param> /// <param name="key">

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

#coding: utf8 import sys from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex class prpcrypt(): def __init__(self, key): self.key = key self.mode = AES.MODE_CBC #加密函数,如果text不是16的倍数[加密文本text必须为16的倍数!],那就补足为16的倍数 def encrypt(self, text):

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

介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章.大多数情况下,我都把数据库的连接字符串放在了web.config中.其中包含许多敏感信息,包括连接数据库的用户名密码等.然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗? 如果我们的程序只是部署在内部服务器中,这应该没

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

ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "你的Web项目路径" 解密: C:\WINDOWS\Microsoft.NET\Fram

ASP.Net中关于WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

本文主要介绍了ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据传递的相关知识.具有很好的参考价值.下面跟着小编一起来看下吧 前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝试,中途也遇到了不少问题.今天就来讨论一下其中之一的问题,WebAPI与前端Ajax 进行跨域数据交互时,由于都在不同的二级域名下(一级域名相同),导

ASP.NET 中 POST 数据并跳转页面(译自 Redirect and POST in ASP.NET)

本文翻译自 Samer Abu Rabie 的 <Redirect and POST in ASP.NET> 简介 在实际项目中,我们会遇到这样一种应用场景:我们需要与第三方的应用程序通信,在某些特定的情形下,我们不得不使用 POST 请求而非 GET 请求传递信息. 背景 起初,这个问题看起来很简单,但实际并不是那样.我很努力地寻求这个问题的解决方法,仔细谷歌搜索之后发现并没有让我满意的较好解决方案.让我们先来看看向指定的目的URL发送数据(包括POST和GET)有哪些可选方法: 1. Re

ASP.NET中Cookie跨域的问题及解决代码

ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.com/zhangziqiu/archive/2009/08/06/cookies-javascript-aspnet.html 最近在项目开发中遇到一个很棘手的问题,一个用户在顶级域名登录后,跳转到自己所拥有的二级域名下管理二级网站时,cookie丢失了,一直找解决办法找了整整两天,百度谷歌一大堆,