Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。你可以在IE的“工具/Internet选项”的“常规”选项卡中,选择“设置/查看文件”,查看所有保存到你电脑里的Cookie。这些文件通常是以user@domain格式命名的,user是你的本地用户名,domain是所访问的网站的域名。如果你使用NetsCape浏览器,则存放在“C:\PROGRAMFILES\NETSCAPE\USERS\”里面,与IE不同的是,NETSCAPE是使用一个Cookie 文件记录所有网站的Cookies。
为了保证上网安全我们需要对Cookie进行适当设置。打开“工具/Internet选项”中的“隐私”选项卡(注意该设置只在IE6.0中存在,其他版本IE可以在“工具/Internet选项”的“安全”标签中单击“自定义级别”按钮,进行简单调整),调整Cookie的安全级别。通常情况,可以将滑块调整到“中高答州”或者“高”的位置。多数的论坛站点需要使用Cookie信息,如果你从来不去这些地方,可以将安全级调到“阻止所有 Cookies”。如果只是为了禁止个别网站的Cookie,可以单击“编辑”按钮,将要屏蔽的网站添加到列表中。在“高级”按钮选项中,你可以对第一方 Cookie和第三方的Cookie进行设置,第一方Cookie是你正在浏览的网站的Cookie,第三方Cookie非正在浏览的网站发给你的 Cookie,通常要对第三方Cookie选择“拒绝”,如图1。你如果需要保存Cookie,可以使用IE的“导入孝举或导出”功能,打开“文件/导入导出”,按提示 *** 作即可。
这个是有通过密匙加密的,密匙一般配置在弯晌雹components->request->cookieValidationKey,没有密匙埋帆解密。。谨森。就不在我们研究范围了。至于解密的过程你可以查看yii\web\Request下的getCookies方法,看他怎么解密的。
using Systemusing System.Collections.Generic
using System.Text
using System.Security.Cryptography
using System.IO
namespace clsModel
{
class clsModel
{
public static string UserMd5(string str)
{
string cl = str
string pwd = ""
MD5 md5 = MD5.Create()//实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl))
// 通过使返圆用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0i <s.Lengthi++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小肆仔写的字母,如果使用大裂世汪写(X)则格式后的字符是大写字符
pwd = pwd + s[i].ToString("x").PadLeft(2, '0')
}
return pwd
}
private static byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }
public static String Encrypt(String Key, String str)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0, 8))
byte[] bIV = IV
byte[] bStr = Encoding.UTF8.GetBytes(str)
try
{
DESCryptoServiceProvider desc = new DESCryptoServiceProvider()
MemoryStream mStream = new MemoryStream()
CryptoStream cStream = new CryptoStream(mStream, desc.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)
cStream.Write(bStr, 0, bStr.Length)
cStream.FlushFinalBlock()
return Convert.ToBase64String(mStream.ToArray())
}
catch
{
return string.Empty
}
}
public static String Decrypt(String Key, String DecryptStr)
{
try
{
byte[] bKey = Encoding.UTF8.GetBytes(Key.Substring(0, 8))
byte[] bIV = IV
byte[] bStr = Convert.FromBase64String(DecryptStr)
DESCryptoServiceProvider desc = new DESCryptoServiceProvider()
MemoryStream mStream = new MemoryStream()
CryptoStream cStream = new CryptoStream(mStream, desc.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)
cStream.Write(bStr, 0, bStr.Length)
cStream.FlushFinalBlock()
return Encoding.UTF8.GetString(mStream.ToArray())
}
catch
{
return string.Empty
}
}
}
}
完整的加密解密类...直接引用就可以,方法中的参数Key为密码,可以自己指定...
Encrypt加密的方法
Decrypt解密的方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)