㈠ 登录口令用什么加密方式好(MD5、SHA1,还是其他) - php进阶讨论
为了兼容低版本就用MD5。。否则用SHA1。。。
㈡ php digest session id怎么赋值
前序:
首先要明白PHPSESSID看似多次刷新都不会改变其实是没有删除本地相关联的cookie,删除的方法
session_destroy();//删除服务器端的session文件
setcookie(session_name(),'',time()-3600,'/');//删除本地相关联的cookie
session_unset();//清空内存中的cookie或者是$_SESSION = array();
然后再刷新相应的页面你就会看到PHPSESSID会发生变化了,根据此可以得:如果session文件已经创建则不重新生成PHPSESSID,否则需要重新生成,生成规则,就看下边喽……!
--------------------------------------------------------------------------------------------------------------------------------------
现在经过测试应该是不是检测session文件是否存在,而是检测PHPSESSID的cookie是否存在并且是否未过期!特此更正!
------------------------------------------------------------------------------------------------
可能PHP开发者心中多少都思考过这么两个问题:
种植在客户端浏览器中的PHPSESSIONID会出现重复吗?
PHPSESSIONID安全性如何,有没可能被黑客轻易的仿造呢?
带上这个问题,我稍微注意了一下PHP的源码后,疑问也就有了答案。
PHP在使用默认的 session.save_handler = files 方式时,PHPSESSIONID的生产算法原理如下:
hash_func = md5 / sha1 #可由php.ini配置
PHPSESSIONID = hash_func(客户端IP + 当前时间(秒)+ 当前时间(微妙)+ PHP自带的随机数生产器)
从以上hash_func(*)中的数据采样值的内容分析,多个用户在同一台服务器时所生产的PHPSESSIONID重复的概率极低(至少为百万份之一),设想,但台动态Web Server能到2000/rps已经很强悍了。
另外,黑客如果要猜出某一用户的PHPSESSIONID,则他也必须知道“客户端IP、当前时间(秒、微妙)、随机数”等数据方可模拟。
以下是截取PHP源码中PHPSESSIONID实现片段:
gettimeofday(&tv, NULL);
if (
zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS &&
Z_TYPE_PP(array) == IS_ARRAY && zend_hash_find(Z_ARRVAL_PP(array), "REMOTE_ADDR", sizeof("REMOTE_ADDR"), (void **) &token) == SUCCESS)
{
remote_addr = Z_STRVAL_PP(token);
}
spprintf(&buf, 0, "%.15s%ld%ld%0.8F", remote_addr ? remote_addr : "", tv.tv_sec, (long int)tv.tv_usec, php_combined_lcg(TSRMLS_C) * 10);
switch (PS(hash_func))
{
case PS_HASH_FUNC_MD5:
PHP_MD5Init(&md5_context);
PHP_MD5Update(&md5_context, (unsigned char *) buf, strlen(buf));
digest_len = 16;
break;
case PS_HASH_FUNC_SHA1:
PHP_SHA1Init(&sha1_context);
PHP_SHA1Update(&sha1_context, (unsigned char *) buf, strlen(buf));
digest_len = 20;
break;
default:
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function");
efree(buf);
return NULL;
}
㈢ php: sha1和 md5 两种加密的区别
MD5和SHA-1是目前使用比较广泛的散列(Hash)函数,也是在消息认证和数字签名中普遍使用的两种加密算法。本文基于AVR高速嵌入式单片机,实现了MD5和SHA-1两种加密算法的比较,并对算法进行了汇编语言的优化和改进。根据实验结果,对两种算法的
㈣ php: sha1和 md5 两种加密的区别
MD5
消息摘要算法5(MD5),把信息分为512比特的分组,并且创建一个128比特的摘要。
SHA-1
安全hash算法(SHA-1),也是基于MD5的,使用一个标准把信息分为512比特的分组,并且创建一个160比特的摘要
㈤ 如何用php的md5或者sha1验证文件是否相同
$md5 = mdt(file_get_contents('1.txt'));
㈥ 怎么给URL加密
你可以设置跳转啊!也就是满足什么条件到什么页面!一个switch()语句及可以了!URL加密!鄙人没有听说过!但是传输一些特殊字符的时候可以URLENCODE()一下!
㈦ php: sha1和 md5 两种加密的区别
要说安全,单一的加密其实安全是差不多的.想安全就要多重加密,
这两个其实来说也没什么太大的区别,只是sha1更长了些
㈧ php中echo sha1(123); 和insert into member(pw) values(md5(123));结果不一样,高手指点!
echo结果:123
mysql结果:无密码
㈨ 说能说清楚C#md5和php md5加密技术的区别,以实例说明
原理其实都是一样的,你说的种子问题其实可以理解为加密盐
同样的值的MD5结果是一样的,前提是编码需要一致
默认的编码是Unicode
对非英文字符 ,编码不同MD5的结果也是不同的,
以下是对字符"梦世繁华"的md5值的比较,你可以看看
md5("梦世繁华")
UTF-8 32位GB2312 32位Unicode 32位
//=====================================================
md5 16
md5 16 utf-8
a2cccbcf9c0e3ca9
A2CCCBCF9C0E3CA9
md5 16 gb2312
2f82ed6fb6a9d0a8
2F82ED6FB6A9D0A8
md5 16 unicode
9821973ddd33dc81
9821973DDD33DC81
//=====================================================
md5 Hash Utf-8
e5-18-ec-8a-a2-cc-cb-cf-9c-0e-3c-a9-1d-e2-9b-5a
E5-18-EC-8A-A2-CC-CB-CF-9C-0E-3C-A9-1D-E2-9B-5A
md5 hash GB2312
5e-ba-da-d0-2f-82-ed-6f-b6-a9-d0-a8-59-9b-c7-3a
5E-BA-DA-D0-2F-82-ED-6F-B6-A9-D0-A8-59-9B-C7-3A
md5 hash UNICode
5f-df-ba-4d-98-21-97-3d-dd-33-dc-81-8b-e3-1c-2f
5F-DF-BA-4D-98-21-97-3D-DD-33-DC-81-8B-E3-1C-2F
//=====================================================
Sha1Hash Utf-8
a8-26-5f-e6-69-27-18-f4-3c-1b-16-30-10-9e-ee-3f-8d-df-3a-84
A8-26-5F-E6-69-27-18-F4-3C-1B-16-30-10-9E-EE-3F-8D-DF-3A-84
Sha1Hash GB2312
b4-eb-13-07-bc-7b-9b-d3-e4-8c-4a-82-6a-9b-7b-8b-1e-4a-dd-3b
B4-EB-13-07-BC-7B-9B-D3-E4-8C-4A-82-6A-9B-7B-8B-1E-4A-DD-3B
Sha1Hash UNICode
af-be-2d-d5-d2-7e-fa-55-ea-11-3d-ad-da-35-fc-a5-b9-c4-e9-88
AF-BE-2D-D5-D2-7E-FA-55-EA-11-3D-AD-DA-35-FC-A5-B9-C4-E9-88
㈩ php中我看对密码加密的时候md5是很常用的,但我看手册上还有一个加密方法叫sha1,为什么很少看到人使用
只是你看的太少了,加密方式多种多样的
我比较喜欢
md5($key.md5($str))这种方式
反正主要的目的就是让破解变的稍微麻烦一点而已
不过在强大的黑客面前,你怎么加密都是很单薄的