位置: 编程技术 - 正文

PHP字符串函数crypt()的用法(php字符串处理函数)

编辑:rootadmin
crypt

推荐整理分享PHP字符串函数crypt()的用法(php字符串处理函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php常用字符串,php 字符串处理,php字符串类型,php常用字符串,php常用字符串,php字符串类型,php常用字符串,php字符串定义,内容如对您有帮助,希望把文章链接给更多的朋友!

(PHP 4, PHP 5)

crypt — 单向字符串散列

说明 string crypt ( string $str [, string $salt ] )

crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。

有些系统支持不止一种散列类型。实际上,有时候,基于 MD5 的算法被用来替代基于标准 DES 的算法。这种散列类型由盐值参数触发。在 5.3 之前,PHP 在安装时根据系统的 crypt() 决定可用的算法。如果没有提供盐值,PHP 将自动生成一个 2 个字符(DES)或者 个字符(MD5)的盐值 ,这取决于 MD5 crypt() 的可用性。PHP 设置了一个名为 CRYPT_SALT_LENGTH 的常量,用来表示可用散列允许的最长可用盐值。

基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符,所以更长的以相同 8 个字符开始的字符串也将生成相同的结果(当使用了相同的盐值时)。

在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1:

CRYPT_STD_DES - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。 CRYPT_EXT_DES - 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。 CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 字符的字符串盐值。 CRYPT_BLOWFISH - Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 -,超出这个范围将导致 crypt() 失败。 CRYPT_SHA - SHA- 算法使用一个以 $5$ 开头的 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 ,最小是 ,最大是 ,,。超出这个范围的 N 将会被转换为最接近的值。 CRYPT_SHA - SHA- 算法使用一个以 $6$ 开头的 字符字符串盐值进行散列。如果盐值字符串以 “rounds=<N>$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 ,最小是 ,最大是 ,,。超出这个范围的 N 将会被转换为最接近的值。

Note:

从 PHP 5.3.0 起,PHP 包含了它自己的实现,并将在系统缺乏相应算法支持的时候使用它自己的实现。

参数

str

待散列的字符串。

salt PHP字符串函数crypt()的用法(php字符串处理函数)

可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。

返回值

返回散列后的字符串或一个少于 字符的字符串,从而保证在失败时与盐值区分开来。

更新日志

版本 说明 5.3.2 基于 Ulrich Drepper 的»实现,新增基于 SHA- 算法和 SHA- 算法的 crypt。 5.3.2 修正了 Blowfish 算法由于非法循环导致的问题,返回“失败”字符串(“*0” 或 “*1”)而不是转而使用 DES 算法。 5.3.0 PHP 现在包含了它自己的 MD5 Crypt 实现,包括标准 DES 算法,扩展的 DES 算法以及 Blowfish 算法。如果系统缺乏相应的实现,那么 PHP 将使用它自己的实现。

范例

Example #1 crypt() 范例

<?php$password=crypt('mypassword');//自动生成盐值/*你应当使用crypt()得到的完整结果作为盐值进行密码校验,以此来避免使用不同散列算法导致的问题。(如上所述,基于标准DES算法的密码散列使用2字符盐值,但是基于MD5算法的散列使用个字符盐值。)*/if(crypt($user_input,$password)==$password){echo"Passwordverified!";}?>

Example #2 利用 htpasswd 进行 crypt() 加密

<?php//设置密码$password='mypassword';//获取散列值,使用自动盐值$hash=crypt($password);?>

Example #3 以不同散列类型使用 crypt()

<?phpif(CRYPT_STD_DES==1){echo'StandardDES:'.crypt('rasmuslerdorf','rl')."n";}if(CRYPT_EXT_DES==1){echo'ExtendedDES:'.crypt('rasmuslerdorf','_J9..rasm')."n";}if(CRYPT_MD5==1){echo'MD5:'.crypt('rasmuslerdorf','$1$rasmusle$')."n";}if(CRYPT_BLOWFISH==1){echo'Blowfish:'.crypt('rasmuslerdorf','$2a$$usesomesillystringforsalt$')."n";}if(CRYPT_SHA==1){echo'SHA-:'.crypt('rasmuslerdorf','$5$rounds=$usesomesillystringforsalt$')."n";}if(CRYPT_SHA==1){echo'SHA-:'.crypt('rasmuslerdorf','$6$rounds=$usesomesillystringforsalt$')."n";}?>

以上例程的输出类似于:

注释

Note: 由于 crypt() 使用的是单向算法,因此不存在 decrypt 函数。

参见

md5() - 计算字符串的 MD5 散列值 Mcrypt 扩展 更多关于 crypt 函数的信息,请阅读 Unix man 页面

PHP字符串函数echo()的用法 echo(PHP4,PHP5)echo输出一个或多个字符串说明voidecho(string$arg1[,string$...])输出所有参数。echo不是一个函数(它是一个语言结构),因此你不一定要使用小括

PHP字符串函数count_chars()的用法 count_chars(PHP4,PHP5)count_chars返回字符串所用字符的信息说明mixedcount_chars(string$string[,int$mode=0])统计string中每个字节值(0..)出现的次数,使用多种模式返

PHP字符串函数convert_uuencode()的用法 convert_uuencode(PHP5)convert_uuencode使用uuencode编码一个字符串说明stringconvert_uuencode(string$data)convert_uuencode()使用uuencode算法对一个字符串进行编码。uuencode算法

标签: php字符串处理函数

本文链接地址:https://www.jiuchutong.com/biancheng/279865.html 转载请保留说明!

上一篇:PHP字符串函数fprintf()的用法(php字符串赋值)

下一篇:PHP字符串函数echo()的用法(在php中,字符串有哪些表示形式)

  • 计算土地增值税时允许扣除的项目有
  • 转让非独占许可使用权
  • 计提企业所得税分录
  • 天然气税率13%变11%
  • 土增税税率和速算例题
  • 我国会计准则规定,会计核算以人民币为记账本位币
  • 一次性开票分期确认收入的税务文件是什么
  • 医疗费用收费票据
  • 个人所得税累计扣除标准
  • 其他债权投资有减值吗
  • 审计的基本流程是什么
  • 营改增前土地增值税的计算方法
  • 如何核销财政票据的发票
  • 土增税清算时统借统还利息能否据实扣除
  • 合伙企业的合伙协议
  • 化验室购买仪器计入什么科目
  • 代收收入会计分录
  • 担保预计负债要如何做账?
  • 发生的成本作为存货处理
  • 存货计提减值准备对所得税的影响
  • 会务费发票税率是
  • 学校里的水电费是政府买单吗
  • 城建税教育费附加税率怎么计算
  • 临时工发工资要扣税吗
  • 限售股转让个人所得税
  • 应收账款 转让
  • 研发费用界定标准
  • 计提工资当月要结转吗?
  • 客户扣了一部分不合格产品的货款,请问如何做账呢?
  • 数人侵权行为的类型
  • 电脑总是死机
  • php数组函数大全
  • 社保公积金的钱可以提出来吗
  • php正则替换字符串
  • 怎么删除win10开机多余选项
  • 股权无偿赠与协议书范本
  • 汇兑损益和财务费用区别
  • 公司的净资产总值怎么算
  • Otter Cliffs, Acadia National Park, Maine (© dbimages/Alamy)
  • 财务人员如何审核招待费报销单
  • 发票交付在哪里
  • 应纳所得税额税率表
  • php框架的作用
  • 管理费用包括哪些会计科目
  • mkdir 命令
  • 持续ping ip的命令
  • 购买低值易耗品的现金流属于什么
  • 业务经费包括哪些内容
  • 收到劳务派遣发票可以抵扣吗
  • 房屋发票备注栏怎么填
  • 计提的教育经费可以税前扣除吗
  • index.php备份文件名
  • 机关事业单位体育协会举办体育赛事活动应当
  • 异地多缴纳预缴税怎么退
  • SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法
  • 委外研发费用如何入账
  • 如何计算债券实际收益
  • 结转主营业务成本是什么意思
  • 租赁费计提部分算入印花税吗
  • 会计证异地可以考吗
  • MySQL 5.6 中 TIMESTAMP 的变化分析
  • 文本效果设置在哪
  • 电脑怎么安装安卓模拟器
  • Win7系统打印机共享无法保存打印机设置0x000006d9
  • win10的显示
  • win7系统命令大全
  • linux cpan
  • 从《AndEngine游戏开发实践指南》开始,学习AndEngine引擎
  • python自动报表
  • nodejs yield
  • 怎么连接w乚an
  • js字符串的操作方法
  • javascript运用
  • 工会的会费收入是什么意思
  • 高级人民法院党组书记级别
  • 小规模纳税人能开9个点的发票吗
  • 小规模纳税人开3%专票怎么交税
  • 山东税务申报如何网上申报
  • 深圳国税电子税务局官网
  • 电子低保证书在哪找
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设