很多站长朋友们都不太清楚phpcrc32作用,今天小编就来给大家整理phpcrc32作用,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP 读文件怎么实现加锁 2、 MD5、CRC32等信息 3、 crc32 — 计算一个字符串的 crc32 多项式? 4、 如何学习PHP str 5、 CRC32的算法 6、 PHP常用函数有哪些 PHP 读文件怎么实现加锁你的问题是:
1. 很多文件,想多进程处理,以提高效率,缩短总处理时间
2. 这些进程只需要读文件,不需要写
3. 对每个文件,只要有一个进程处理过它就可以了,没有多个进程都必须处理它的需求
你的需求其实是分治,将文件分为多个组(不一定要在文件系统上新建目录),然后分而治之,这种情况不需要用锁.
锁不是用于这种场景的,锁用于下面这种场景:
1. 文件file.txt里面记录了user1的销售额和user2的销售额,user1+user2的销售总额
2. 进程php1负责写入user1的数据,进程php2负责写入user2的数据,两个进程各读出销售总额显示给user1,user2
建议你这样解决:
1. 启动多个PHP进程(nohup php your_script.php your_dir )
2. 每个PHP进程赋予一个序号(假设4个进程,那就0,1,2,3),可以通过对进程自身的pid模运算取余数得到,也可以在启动进程的时候通过命令行传入,随你了
3. 每个进程在处理文件前先对文件名做crc32()运算,模一下进程总数: crc32(file_name) % 4, 取模结果与此进程的序号相等就读取内容并处理,不相等就跳过
MD5、CRC32等信息加密算法
MD5的全称是Message-digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc,的Ronald.L.Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和c语言源代码在Internet RFC 1321中有详细的描述(),这是一份最权威的文档,由Ronald.L.Rivest在1992年8月向IETF提交。
Rivest在1989年开发出MD2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,Rogier和Chauvaud发现如果忽略了检验和将产生MD2冲突。MD2算法的加密后结果是唯一的--即没有重复。
为了加强算法的安全性,Rivest在1990年又开发出MD4算法。MD4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damg?rd/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。Den boer和Bosselaers以及其他人很快的发现了攻击MD4版本中第一步和第三步的漏洞。Dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,MD4就此被淘汰掉了。
尽管MD4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
一年以后,即1991年,Rivest开发出技术上更为趋近成熟的md5算法。它在MD4的基础上增加了"安全-带子"(safety-belts)的概念。虽然MD5比MD4稍微慢一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法中,信息-摘要的大小和填充的必要条件与MD5完全相同。Den boer和Bosselaers曾发现MD5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。
Van oorschot和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响MD5的安全性。上面所有这些都不足以成为MD5的在实际应用中的问题。并且,由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。
2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。
MD5破解工程权威网站 是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang, Feng, Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”。
CRC
在远距离数据通信中,为确保高效而无差错地传送数据,必须对数据进行校验即差错控制。循环冗余校验CRC(Cyclic Redundancy Check/Code)是对一个传送数据块进行校验,是一种高效的差错控制方法。
CRC校验采用多项式编码方法。多项式乘除法运算过程与普通代数多项式的乘除法相同。多项式的加减法运算以2为模,加减时不进,错位,如同逻辑异或运算。
MD5用的是哈希函数,在计算机网络中应用较多的不可逆加密算法有RSA公司发明的MD5算法和由美国国家技术标准研究所建议的安全散列算法SHA.
crc32 — 计算一个字符串的 crc32 多项式?您好,对于你的遇到的问题,我很高兴能为你提供帮助,我之前也遇到过哟,以下是我的个人看法,希望能帮助到你,若有错误,还望见谅!。展开全部
CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。 最常用的CRC码及生成多项式名称生成多项式。
CRC-12:
CRC-16:
CRC-CCITT:
CRC-32:
CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
如何学习PHP strPHP 字符串函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
函数 描述 PHP版本
addcslashes() 在指定的字符前添加反斜杠。 4
addslashes() 在指定的预定义字符前添加反斜杠。3
bin2hex() 把 ASCII 字符的字符串转换为十六进制值。3
chop() rtrim() 的别名。 3
chr()从指定的 ASCII 值返回字符。3
chunk_split()把字符串分割为一连串更小的部分。3
convert_cyr_string()把字符由一种 Cyrillic 字符转换成另一种。3
convert_uudecode()对 uuencode 编码的字符串进行解码。5
convert_uuencode()使用 uuencode 算法对字符串进行编码。5
count_chars()返回字符串所用字符的信息。4
crc32()计算一个字符串的 32-bit CRC。4
crypt()单向的字符串加密法 (hashing)。3
echo()输出字符串。3
explode()把字符串打散为数组。3
fprintf()把格式化的字符串写到指定的输出流。5
get_html_translation_table()返回翻译表。4
hebrev()把希伯来文本从右至左的流转换为左至右的流。3
hebrevc()同上,同时把(\n) 转为 <br />。3
html_entity_decode()把 HTML 实体转换为字符。4
htmlentities()把字符转换为 HTML 实体。3
htmlspecialchars_decode()把一些预定义的 HTML 实体转换为字符。5
htmlspecialchars()把一些预定义的字符转换为 HTML 实体。3
implode()把数组元素组合为一个字符串。3
join()implode() 的别名。3
levenshtein()返回两个字符串之间的 Levenshtein 距离。3
localeconv()返回包含本地数字及货币信息格式的数组。4
ltrim()从字符串左侧删除空格或其他预定义字符。3
md5()计算字符串的 MD5 散列。3
md5_file()计算文件的 MD5 散列。4
metaphone()计算字符串的 metaphone 键。4
money_format()把字符串格式化为货币字符串。4
nl_langinfo()返回指定的本地信息。4
nl2br()在字符串中的每个新行之前插入 HTML 换行符。3
number_format()通过千位分组来格式化数字。3
ord()返回字符串第一个字符的 ASCII 值。3
parse_str()把查询字符串解析到变量中。3
print()输出一个或多个字符串。3
printf()输出格式化的字符串。3
quoted_printable_decode()解码 quoted-printable 字符串。3
quotemeta()在字符串中某些预定义的字符前添加反斜杠。3
rtrim()从字符串的末端开始删除空白字符或其他预定义字符。3
setlocale()设置地区信息(地域信息)。3
sha1()计算字符串的 SHA-1 散列。4
sha1_file()计算文件的 SHA-1 散列。4
similar_text()计算两个字符串的匹配字符的数目。3
soundex()计算字符串的 soundex 键。3
sprintf()把格式化的字符串写写入一个变量中。3
sscanf()根据指定的格式解析来自一个字符串的输入。4
str_ireplace()替换字符串中的一些字符。(对大小写不敏感)5
str_pad()把字符串填充为新的长度。4
str_repeat()把字符串重复指定的次数。4
str_replace()替换字符串中的一些字符。(对大小写敏感)3
str_rot13()对字符串执行 ROT13 编码。4
str_shuffle()随机地打乱字符串中的所有字符。4
str_split()把字符串分割到数组中。5
str_word_count()计算字符串中的单词数。4
strcasecmp()比较两个字符串。(对大小写不敏感)3
strchr()搜索字符串在另一字符串中的第一次出现。strstr() 的别名3
strcmp()比较两个字符串。(对大小写敏感)3
strcoll()比较两个字符串(根据本地设置)。4
strcspn()返回在找到任何指定的字符之前,在字符串查找的字符数。3
strip_tags()剥去 HTML、XML 以及 PHP 的标签。3
stripcslashes()删除由 addcslashes() 函数添加的反斜杠。4
stripslashes()删除由 addslashes() 函数添加的反斜杠。3
stripos()返回字符串在另一字符串中第一次出现的位置(大小写不敏感)5
stristr()查找字符串在另一字符串中第一次出现的位置(大小写不敏感)3
strlen()返回字符串的长度。3
strnatcasecmp()使用一种“自然”算法来比较两个字符串(对大小写不敏感)4
strnatcmp()使用一种“自然”算法来比较两个字符串(对大小写敏感)4
strncasecmp()前 n 个字符的字符串比较(对大小写不敏感)。4
strncmp()前 n 个字符的字符串比较(对大小写敏感)。4
strpbrk()在字符串中搜索指定字符中的任意一个。5
strpos()返回字符串在另一字符串中首次出现的位置(对大小写敏感)3
strrchr()查找字符串在另一个字符串中最后一次出现的位置。3
strrev()反转字符串。3
strripos()查找字符串在另一字符串中最后出现的位置(对大小写不敏感)5
strrpos()查找字符串在另一字符串中最后出现的位置(对大小写敏感)3
strspn()返回在字符串中包含的特定字符的数目。3
strstr()搜索字符串在另一字符串中的首次出现(对大小写敏感)3
strtok()把字符串分割为更小的字符串。3
strtolower()把字符串转换为小写。3
strtoupper()把字符串转换为大写。3
strtr()转换字符串中特定的字符。3
substr()返回字符串的一部分。3
substr_compare()从指定的开始长度比较两个字符串。5
substr_count()计算子串在字符串中出现的次数。4
substr_replace()把字符串的一部分替换为另一个字符串。4
trim()从字符串的两端删除空白字符和其他预定义字符。3
ucfirst()把字符串中的首字符转换为大写。3
ucwords()把字符串中每个单词的首字符转换为大写。3
vfprintf()把格式化的字符串写到指定的输出流。5
vprintf()输出格式化的字符串。4
vsprintf()把格式化字符串写入变量中。4
wordwrap()按照指定长度对字符串进行折行处理。4
CRC32的算法通常的CRC算法在计算一个数据段的CRC值时,其CRC值是由求解每个数值的CRC值的和对CRC寄存器的值反复更新而得到的。这样,求解CRC的速度较慢。通过对CRC算法的研究,我们发现:一个8位数据加到16位累加器中去,只有累加器的高8位或低8位与数据相作用,其结果仅有256种可能的组合值。因而,我们可以用查表法来代替反复的运算,这也同样适用于CRC32的计算。本文所提供的程序库中,函数crchware是一般的16位CRC的算法;mk-crctbl用以在内存中建立一个CRC数值表;crcupdate用以查表并更新CRC累加器的值;crcrevhware和crcrevupdate是反序算法的两个函数;BuildCRCTable、CalculateBlockCRC32和UpdateCharac
terCRC32用于CRC32的计算。 /*CRC.C——CRC程序库*/#define CRCCCITT0x1021#define CCITT-REV0x8408#define CRC160x8005#define CRC16-REV0xA001#define CRC32-POLYNOMIAL0xEDB88320L/*以上为CRC除数的定义*/#define NIL0#define crcupdate(d,a,t) *(a)=(*(a)<<8)^(t)[(*(a)>>8)^(d)];#define crcupdate16(d,a,t) *(a)=(*(a)>>8^(t)[(*(a)^(d))0x00ff])/*以上两个宏可以代替函数crcupdate和crcrevupdate*/#include <stdio.h>#include <stdlib.h>#include <alloc.h>/*函数crchware是传统的CRC算法,其返回值即CRC值*/unsigned short crchware(data,genpoly,accum)unsigned short data;/*输入的数据*/unsigned short genpoly;/*CRC除数*/unsigned short accum;/*CRC累加器值*/{ static int i; data<<=8; for(i=8;i>0;i--) { if((data^accum)0x8000) accum=(accum<<1)^genpoly; else accum<<=1; data<<=1; } return(accum);}/*函数mk-crctbl利用函数crchware建立内存中的CRC数值表*/unsigned short *mk-crctbl(poly,crcfn);unsigned short poly; /*CRC除数--CRC生成多项式*/R>unsigned short(*crcfn)(); /*指向CRC函数(例如crchware)的指针*/{ /*unsignedshort*/malloc();*/ unsignedshort*crctp; inti; if((crctp=(unsignedshort*)malloc(256*sizeof(unsigned)))==0) return0; for(i=0;i<256;i++) crctp=(*crcfn)(i,poly,0); returncrctp;}/*函数mk-crctbl的使用范例*/if((crctblp=mk-crctbl(CRCCCITT,crchware))==NIL){ puts(insuffmemoryforCRClookuptable.n); return1;*/ /*函数crcupdate用以用查表法计算CRC值并更新CRC累加器值*/ voidcrcupdate(data,accum,crctab) unsignedshortdata;/*输入的数据*/ unsignedshort*accum;/*指向CRC累加器的指针*/ unsignedshort*crctab;/*指向内存中CRC表的指针*/ { staticshortcomb-val; comb-val=(*accum>>8)^data; *accum=(*accum<<8)^crctab[comb-val]; } /*函数crcrevhware是传统的CRC算法的反序算法,其返回值即CRC值*/ unsignedshortcrcrevhware(data,genpoly,accum) unsignedshortdata; unsignedshortgenpoly; unsignedshortaccum; { staticinti; data<<=1; for(i=8;i>0;i--) { data>>=1; if((data^accum)0x0001) accum=(accum>>1)^genpoly; else accum>>=1; } returnaccum; } /*函数crcrevupdate用以用反序查表法计算CRC值并更新CRC累加器值*/ voidcrcrevupdate(data,accum,crcrevtab) unsignedshortdata; unsignedshort*accum;DvNews2.
crc32 — 计算一个字符串的 crc32 多项式
PHP常用函数有哪些常用函数比较多
如:字符串处理函数,数组函数,日期函数,MySQL函数,文件系统函数,GD函数库等
关于phpcrc32作用的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于phpcrc32作用 php cgi是什么的详细内容...