php实现cookie加密的方法

时间:2015-08-22 11:12:05 作者:Sylvie617 综合材料 收藏本文 下载本文

“Sylvie617”通过精心收集,向本站投稿了10篇php实现cookie加密的方法,以下是小编为大家整理后的php实现cookie加密的方法,欢迎参阅,希望可以帮助到有需要的朋友。

篇1:php实现cookie加密的方法

作者:小 字体:[增加 减小] 类型:

代码如下:

<?php

class Cookie

{

/**

* 解密已经加密了的cookie

*

* @param string $encryptedText

* @return string

*/

private static function _decrypt($encryptedText)

{

$key = Config::get(‘secret_key‘);

$cryptText = base64_decode($encryptedText);

$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

$decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptText, MCRYPT_MODE_ECB, $iv);

return trim($decryptText);

}

/**

* 加密cookie

*

* @param string $plainText

* @return string

*/

private static function _encrypt($plainText)

{

$key = Config::get(‘secret_key‘);

$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

$encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainText, MCRYPT_MODE_ECB, $iv);

return trim(base64_encode($encryptText));

}

/**

* 删除cookie

*

* @param array $args

* @return boolean

*/

public static function del($args)

{

$name = $args[‘name‘];

$domain = isset($args[‘domain‘]) ? $args[‘domain‘] : null;

return isset($_COOKIE[$name]) ? setcookie($name, ‘‘, time - 86400, ‘/‘, $domain) : true;

}

/**

* 得到指定cookie的值

*

* @param string $name

*/

public static function get($name)

{

return isset($_COOKIE[$name]) ? self::_decrypt($_COOKIE[$name]) : null;

}

/**

* 设置cookie

*

* @param array $args

* @return boolean

*/

public static function set($args)

{

$name = $args[‘name‘];

$value= self::_encrypt($args[‘value‘]);

$expire = isset($args[‘expire‘]) ? $args[‘expire‘] : null;

$path = isset($args[‘path‘]) ? $args[‘path‘] : ‘/‘;

$domain = isset($args[‘domain‘]) ? $args[‘domain‘] : null;

$secure = isset($args[‘secure‘]) ? $args[‘secure‘] : 0;

return setcookie($name, $value, $expire, $path, $domain, $secure);

}

}

希望本文所述对大家的php程序设计有所帮助,

篇2:PHP中如何使用Cookie

PHP中如何使用Cookie

PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单,

比如设置一个名为 MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$ myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。

分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)

echo $MyCookie;

echo $CookieArray[0];

echo $_COOKIE[“MyCookie”];

echo $HTTP_COOKIE_VARS[“MyCookie”];

要删除一个已经存在的Cookie,有两个办法:

1、SetCookie(“Cookie”, “”);

2、SetCookie(“Cookie”, “value” , time()-1 / time() );

使用Cookie的限制

1、必须在HTML文件的.内容输出之前设置;

2、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果,

3、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

篇3:PHP如何设置和取得Cookie值

如果不需要URLencoded可以使用setrawcookie代替

PHP $COOKIE变量用来取得一个cookie值,下面的例子中我们取得了名字为url的cookie值并显示在了页面上:

// Print a cookie

echo $_COOKIE[“url”];

// A way to view all cookies

print_r($_COOKIE);

?>

篇4:一个简单的PHP框架实现方法

非原创,自己集合了类Apode+ DZ模板 + 封装PDO,应用过程就不用看了,和普通框架语法是一样的,看一下实现过程吧,主要学习如何去实现一个框架,等你学会扩展或在上面开发的话,学别的框架也只需要半小时了

几个核心

app.php

__autoload(自动加载类)

base.class.php

abstract class Base {}//数据抽象

action.class.php

abstract class Action extends Base {}//继承类

Action(核心加载类)

controller.class.php

getController(默认访问的Controller和Action)

model.class.php

Model(核心Model类)

在controller中写条件时,可以用 $sqladd[title] = 'test';传数组给model

想再扩展的话只需要在action.class.php插入相关的类就可以了

篇5:如何加密url参数地址php

下面是可以将我们的url地址加密.确保我们提交的数据安全

以下是代码片段:

function keyED($txt,$encrypt_key) '定义一个keyED

{

$encrypt_key =  md5($encrypt_key);

$ctr=0;

$tmp = “”;

for($i=0;$i

{

if ($ctr==strlen($encrypt_key))

$ctr=0;

$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);

$ctr++;

}

return $tmp;

}

function encrypt($txt,$key)

{

$encrypt_key = md5(mt_rand(0,100));

$ctr=0;

$tmp = “”;

for ($i=0;$i

{

if ($ctr==strlen($encrypt_key))

$ctr=0;

$tmp.=substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));

$ctr++;

}

return keyED($tmp,$key);

}

function decrypt($txt,$key)

{

$txt = keyED($txt,$key);

$tmp = “”;

for($i=0;$i

{

$md5 = substr($txt,$i,1);

$i++;

$tmp.= (substr($txt,$i,1) ^ $md5);

}

return $tmp;

}

function encrypt_url($url,$key)

{

return rawurlencode(base64_encode(encrypt($url,$key)));

}

function decrypt_url($url,$key)

{

return decrypt(base64_decode(rawurldecode($url)),$key);

}

function geturl($str,$key)

{

$str = decrypt_url($str,$key);

$url_array = explode('&',$str);

if (is_array($url_array))

{

foreach ($url_array as $var)

{

$var_array = explode(“=”,$var);

$vars[$var_array[0]]=$var_array[1];

}

}

return $vars;

}

?>

下面是函数调用的实例

以下是代码片段:

$key = 'key';

//生产加密参数地址

for ($i=0;$i<10;$i++)

{

echo “php技术文章$i

”;

}

//获取参数地址

$get = geturl($_GET['url'],$key);

var_dump($get);

?>

OK就可以就加密了.....

篇6:轻松实现移动硬盘加密

你是否觉得你的移动硬盘里的资料不安全,常常有被人偷愧的危险!

其实,你可以动动你的MOUSE,就可以轻松保护你的秘密的安全性,

本操作是在WINDOWS XP操作系统下实现的,适用于NTFS文件格式下的WINDOWS操作系统。

实现原理:

NTFS是WinNT以上版本支持的一种提供安全性、可靠性的高级文件系统。在Win和WinXP中,NTFS还可以提供诸如文件和文件夹权限、加密、磁盘配额和压缩这样的高级功能。利用NTFS提供加密功能及系统数字证书可以实现对资料的高级加密。

一、NTFS格式实现移动硬盘加密

你可以对分区内的所有文件进行EFS加密,前提是分区格式为NTFS,

选定移动硬盘盘符或要加密的文件夹,点右键,属性,常规-高级,勾选最下面的“加密内容以便保护数据”复选框 ,连续点三次确定就可以了,EFS加密很快,在其它电脑上无法再访问。但是这种方法有一个误区,那就是您一旦重装系统的话,加密的文件将不复存在。

二、用移动硬盘加密软件来给移动硬盘加密

在这里我要推荐您使用的是u盘超级加密3000。

U盘超级加密3000可以几秒内加密U盘和加密移动硬盘里面的全部文件和文件夹或者是你指定的需要加密的文件和需要加密的文件夹。解密时也可以解密全部加密的文件和加密的文件夹或只解密你需要使用的加密文件和加密文件夹。

另外u盘超级加密3000的功能非常的强大,您可以到u盘超级加密3000的 下载u盘超级加密3000,试用即可。

篇7:RC4文件加密的python实现方法

作者:1Byte 字体:[增加 减小] 类型:

这篇文章主要介绍了RC4文件加密的python实现方法,实例分析了RC4文件加密的原理与Python实现技巧,需要的朋友可以参考下

本文实例讲述了RC4文件加密的python实现方法,分享给大家供大家参考。具体分析如下:

基于RC4流加密算法,使用扩展的16*16的S盒,32字节密钥。

目前应该是比较安全的。

刚学习python,好不容易调通了。

而且在VC和python下各实现了一遍,两个平台能够互相加解密,很有成就感的说。

下面是python3.0中的实现,在2.x下需要稍加修改。

# for python 3.0# from 李勃import struct,sys,os,binascii“”“ RC4加密算法 16*16 S盒 加密单元:short”“”def RC4(pkey,keylen,pin,dlen): N=65536 S = list(range(N)) j = 0 for i in range(N): j = (j + S[i] + pkey[i%keylen])%N temp = S[i] S[i] = S[j] S[j] = temp i = j = 0 pout= b‘‘ for x in range(dlen): i = i+1 j = (j + S[i])%N temp = S[i] S[i] = S[j] S[j] = temp pout += struct.pack(‘H‘,pin[x]^S[(S[i]+S[j])%N]) return(pout)# bytes->shortdef Coding(data): if(len(data)%2): data+=b‘‘ dlen = len(data)//2 return(struct.unpack(str(dlen)+‘H‘,data))# short->bytesdef unCoding(data): d=b‘‘ for i in range(len(data)): d += struct.pack(‘H‘,data[i]) return(d)#产生32字节密钥def CreatKey(Keyt): pl = len(Keyt) Key=b‘‘ r=0 for i in range(32): k=(Keyt[r%pl]+i)%256 Key+= struct.pack(‘B‘,k) r+=1 return Key#更新密钥def UpdataKey(Keyt): Key = unCoding(Keyt) #循环左移 Key = Key[1:] + struct.pack(‘B‘,Key[0]) tem=0 #求和 for i in range(len(Key)): tem += Key[i]; Keyo=b‘‘ #Xor for i in range(len(Key)): Keyo += struct.pack(‘B‘,(Key[i]^tem)%256) tem += Keyo[i]>>3 tem = tem % 256 return(Coding(Keyo))if __name__ == ‘__main__‘: #获得输入文件 if len(sys.argv)==1: filename = input(‘源文件: ‘) else: filename = sys.argv[1] try: fin = open(filename,‘rb‘) except: print(‘打开文件失败!‘) input sys.exit() print(filename) #打开输出文件 if filename[-4:]==‘.RC4‘: eID = 1 key=input(‘输入解密密钥: ‘).encode() filename = filename[:-4] else: eID = 2 key=input(‘输入加密密钥: ‘).encode() filename = filename+‘.RC4‘ key = Coding(CreatKey(key)) key = UpdataKey(key) #处理重名 while os.path.exists(ofilename): filename = os.path.dirname(ofilename)+ ‘副本 ‘+ os.path.basename(ofilename) fout = open(ofilename,‘wb‘) print(ofilename) #解密 if eID==1: #读文件长度 filelen = struct.unpack(‘I‘,fin.read(4))[0] print(‘FlieLen =‘,filelen,‘n......‘) while 1:#读块大小ps= fin.read(2)if not ps: #文件结束 breakpacksize = struct.unpack(‘H‘,ps)[0]#读数据dd=fin.read(packsize)#解密dd=Coding(dd)x = RC4(key,len(key),dd,len(dd))key = UpdataKey(key)#crccrc = struct.unpack(‘I‘,fin.read(4))[0]if binascii.crc32(x)!=crc: print(‘CRC32校验错误!‘,crc,binascii.crc32(x)) input() sys.exit()fout.write(x) #裁剪末尾填充位 fout.truncate(filelen) #加密 elif eID==2: #获得文件长度 fin.seek(0,2) filelen = fin.tell() print(‘FlieLen =‘,filelen,‘n......‘) fin.seek(0,0) fout.write(struct.pack(‘I‘,filelen)) while 1:#读数据dd=fin.read(65534)if not dd: #文件结束 break#末尾填充srl = len(dd)if srl%2: srl+=1; dd+=b‘‘#crccrc = struct.pack(‘I‘,binascii.crc32(dd))#加密数据dd=Coding(dd)x = RC4(key,len(key),dd,len(dd))key = UpdataKey(key)#写入文件fout.write(struct.pack(‘H‘,srl))fout.write(x)fout.write(crc) fin.close() fout.close() print(‘OK!‘) input()

希望本文所述对大家的Python程序设计有所帮助,

篇8:Linux下SYN Cookie的实现原理及方法

概述 在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式,

Linux下SYN Cookie的实现原理及方法

到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。SYN Cookie原理由D. J. Bernstain和 Eric Schenk发明。在很多

篇9:PHP实现双向链表

看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下,上一次分享了链表,这次来补充说一下双向链表。

简短不割

复制代码

class Hero

{

public $pre=null;

public $no;

public $name;

public $next=null;

public function __construct($no='',$name='')

{

$this->no=$no;

$this->name=$name;

}

static public function addHero($head,$hero)

{

$cur = $head;

$isExist=false;

//判断目前这个链表是否为空

if($cur->next==null)

{

$cur->next=$hero;

$hero->pre=$cur;

}

else

{

//如果不是空节点,则安排名来添加

//找到添加的位置

while($cur->next!=null)

{

if($cur->next->no >$hero->no)

{

break;

}

else if($cur->next->no == $hero->no)

{

$isExist=true;

echo “

不能添加相同的编号”;

}

$cur=$cur->next;

}

if(!$isExist)

{

if($cur->next!=null)

{

$hero->next=$cur->next;

}

$hero->pre=$cur;

if($cur->next!=null)

{

$hero->next->pre=$hero;

}

$cur->next=$hero;

}

}

}

篇10:php连贯操作实现

我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码,

M('User')->where(array('id'=>1))->field('name')->select();

这样不仅有利于编码,而且也能让人“心情愉悦”呢。好了,不多说了。让我们看看如何实现的吧?