crypt

PHP加密函数

旧城冷巷雨未停 提交于 2020-03-03 00:46:45
单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出.这个散列计算是单向的,即不能对固定长度的输出进行计算从而获取输入信息. 特征:雪崩效应、定长输出和不可逆 作用:确保数据的完整性 MD5 :以 32 字符十六进制数字形式返回散列值。( 如果第二个参数为true,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 ***由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见 附录2 。 ) crypt :单向字符串散列。( 如果第二个参数没有,创建出的会是弱密 码,php5.6之后没有会抛出E_NOTICE 级别的错误。为了更 好的安全性,请确保指定一个足够强度的盐值。 ) 附录1 sha1 :以 32 字符十六进制数字形式返回散列值。( 如果第二个参数为true,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 ***由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见 附录2 。 ) 对称加密 对称加密是指加密和解密使用的密钥是同一个或者可以互相推算. urlencode :编码 URL 字符串(除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)) urldecode :解码已编码的 URL 字符串 base64

PHP加密函数—crypt()函数加密

醉酒当歌 提交于 2020-03-03 00:46:24
在介绍加密函数之前,我们先来介绍一下数据加密原理:就是对原来的明文件或者数据按照某种算法进行处理,使其成为不可读的一段代码,通常称之为“密文”,通过这样的途径来达到保护数据不被非法窃取和阅读的目的! 在PHP中能对数据进行加密的函数主要有:crypt()、md5()以及sha1(),还有就是加密扩展库Mcrpyt和Mash。在这篇文章中,我 们先介绍使用crpyt()函数进行加密! crypt()函数 可以完成单向加密功能,是单向字符串散列! 大理石平台维修 crypt()函数语法格式如下: 1 string crypt ( string $str [, string $salt ] ) 算法 salt长度 CRYPT_STD_DES 2-character(默认) CRYPT_EXT_DES 9-character CRYPT_MD5 12-character(以$1$开头) CRYPT_BLOWFISH 16-character(以$2$开头) 这里要说明一下: 在默认的情况下,PHP使用一个或者两个字符的 DES 干扰串,如果系统使用的是MD5,那么就会使用 12个字符,可以通过 CRYPT_SALT_LENGTH 变量来查看当前所使用的干扰串的长度! crypt()函数实例用法: 下面我们使用一个实例,让大家一目了然,具体代码如下: 1 2 3 4 5 6 7 <?php

PHP的学习--PHP加密

和自甴很熟 提交于 2020-02-24 04:15:32
PHP中的加密方式有如下几种 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串。 raw_output -- 如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。 这是一种不可逆加密,执行如下的代码 $password = '123456'; echo md5($password); 得到结果是e10adc3949ba59abbe56e057f20f883e 2. Crype加密 string crypt ( string $str [, string $salt ] ) crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。 参数 str -- 待散列的字符串。 salt -- 可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。 这是也一种不可逆加密,执行如下的代码 $password = '123456'; $salt = "test";// 只取前两个 echo crypt($password, $salt); 得到的结果是teMGKvBPcptKo 使用自动盐值的例子如下: $password = crypt(

bytectf2019 boring_code的知识学习&&无参数函数执行&&上海市大学生CTF_boring_code+

◇◆丶佛笑我妖孽 提交于 2020-02-23 10:54:54
参赛感悟 第三次还是第二次参加这种CTF大赛了,感悟和学习也是蛮多的,越发感觉跟大佬的差距明显,但是还是要努力啊,都大三了,也希望出点成绩。比赛中一道WEB都没做出来,唯一有点思路的只有EZCMS,通过哈希扩展攻击,进入admin。但是对于Phar的反序列化让我无所适从,找不到任何的利用点,干看着似乎有反序列化的利用点,却一头雾水。还是学习的太少,boring_code这道题的bypass方法也受益颇多。 boring_code 题目: <?php function is_valid_url($url) { if (filter_var($url, FILTER_VALIDATE_URL)) { if (preg_match('/data:\/\//i', $url)) { return false; } return true; } return false; } if (isset($_POST['url'])){ $url = $_POST['url']; if (is_valid_url($url)) { $r = parse_url($url); if (preg_match('/baidu\.com$/', $r['host'])) { $code = file_get_contents($url); if (';' === preg_replace('/[a-z]+\

Linux的shadow文件/usr/bin/passwd 如何实现普通用户修改自己的密码

情到浓时终转凉″ 提交于 2020-02-03 16:10:08
linux的shadow文件 在《Python绝技》这本书的第一个小程序首先展示了针对与unix系统中shadow文件密码的暴力破解的能力,因为之前只是对shadow文件停留在保存了用户密码的阶段,但并没有详细研究,所以周末两天特地花时间好好研究了一下。 1.passwd文件和shadow文件 在unix早些时候是没有/etc/shadow这个文件的。一个用户的所有信息都只是保存在/etc/passwd文件中,加密后的用户密码保存在了passwd文件的第二个字段中。那么为什么要产生shadow文件呢? 首先我们通过ls查看一下passwd文件的详细权限: -rw-r--r-- 1 root root 1505 Mar 6 22:34 /etc/passwd 可以看出每个用户都是可读的,那么这不就把用户密码暴露给任何人了么?虽然是加过密的,但是这样也存在安全性问题。 现在的文件权限是这样的:(注意/usr/bin/passwd除了rwx权限外还有一个SetUID的s标识位) -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd ---------- 1 root root 964 Mar 6 22:34 /etc/shadow 首先通过对shadow文件取消所有权限,保证了只有root才能对shadow文件进行读写

Bycript/Blowfish and Salts with existing auth system

可紊 提交于 2020-01-17 03:40:48
问题 I'm trying to transition to Blowfish for an authentication system. Bear with me, I'm not a cryptographer and my understanding of Blowfish is not quite there yet. The current setup uses sha1 and salts. The salts are generated for each user and stored in the database. It boils down to this: $salt = $this->getSalt($username); $hash = sha1($password . $salt); if ($hash == $hashInDB) { // user is authenticated, set session id etc ... } The getSalt() method gets the salt stored in the database for

Using ruby to generate SHA512 crypt-style hashes formatted for /etc/shadow?

大憨熊 提交于 2020-01-12 07:41:19
问题 I want to generate SHA512 hashed passwords for inclusion directly into a /etc/shadow file for use with chef's user resource. Normally I'd go to the stdlib's Digest library for this, but it doesn't generate the hash in the right format: ruby-1.9.2-p136 :001 > require 'digest/sha2' => true ruby-1.9.2-p136 :002 > Digest::SHA512.hexdigest('test') => "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff" The format that

hash() vs. crypt() function comparison

痴心易碎 提交于 2020-01-09 10:04:54
问题 I'm currently implementing a login system. I want to store the password and the salt in a database. Now I found out that there is a hash() and a crypt() function which seems to do the same (valid for SHA512). hash() is newer and seems to support more hashing alogrithms than crypt() . Or there any other differences I should know/care about? Edit: function generatePasswordHash($password){ $salt = base64_encode(mcrypt_create_iv(8)); $calculatedPasswordHash = crypt($password, '$1$' . $salt . '$')

Crypt for password hashing. Blowfish produces weird output

跟風遠走 提交于 2020-01-09 05:22:07
问题 I am having a bit little bit of trouble understanding php's crypt function. My PHP version is 5.4.7. I want to use crypt to store salted passwords in the database, because as far as I am told, developers who use md5 to hash passwords are to be staked and burned on the spot. I wanted to use the blowfish alg to generate the hash. Now, according to the php documentation, crypt uses blowfish if you call it with "$2y$" + cost (for instance: "08") + "$" + 22 characters salt ( ./0-9A-Za-z ). However

Do I need base64 encode my salt (for hashing passwords)?

怎甘沉沦 提交于 2020-01-05 05:55:25
问题 Excuse me for this very odd question. I understand the purpose of base64 encoding for transmitting data (i.e. MIME's Base64 encoding), but I don't know if I need to base64 encode my salts. I wrote an utility class (a base abstract class indeed): use Symfony\Component\Security\Core\Encoder\BasePasswordEncoder; abstract class AbstractCryptPasswordEncoder extends BasePasswordEncoder { /** * @return string */ protected abstract function getSaltPrefix(); /** * @return string */ protected abstract