Tutorial PHP

PHP INÍCIO Introdução ao PHP Instalação do PHP Sintaxe PHP Comentários PHP Variáveis ​​PHP PHP Eco/Impressão Tipos de dados PHP Strings PHP Números PHP Matemática PHP Constantes PHP Operadores PHP PHP If...Else...Elseif Chave PHP Loops PHP Funções PHP Matrizes PHP PHP Superglobais PHP RegEx

Formulários PHP

Manipulação de formulários PHP Validação de formulário PHP Formulário PHP obrigatório URL/e-mail do formulário PHP Formulário PHP completo

PHP Avançado

Data e hora do PHP Incluir PHP Manipulação de arquivos PHP Arquivo PHP Abrir/Ler Arquivo PHP Criar/Gravar Upload de arquivo PHP Cookies PHP Sessões PHP Filtros PHP Filtros PHP Avançados Funções de retorno de chamada do PHP PHP JSON Exceções do PHP

PHP OOP

PHP O que é POO Classes/objetos PHP Construtor PHP Destruidor PHP Modificadores de acesso PHP Herança PHP Constantes PHP Classes abstratas PHP Interfaces PHP Características PHP Métodos estáticos PHP Propriedades estáticas do PHP Namespaces PHP Iteráveis ​​PHP

Banco de dados MySQL

Banco de dados MySQL MySQL Connect MySQL Criar banco de dados MySQL Criar Tabela Dados de inserção do MySQL MySQL Obter Último ID MySQL Inserir Múltiplo Preparado para MySQL Dados de seleção do MySQL MySQL Onde MySQL Ordenar por Dados de exclusão do MySQL Dados de atualização do MySQL Dados de limite do MySQL

PHP XML

Analisadores XML PHP Analisador PHP SimpleXML PHP SimpleXML - Obter PHP XML Expatriado PHP XML DOM

PHP - AJAX

Introdução AJAX PHP AJAX Banco de dados AJAX XML AJAX Pesquisa em tempo real AJAX Enquete AJAX

Exemplos PHP

Exemplos PHP Compilador PHP Teste PHP Exercícios PHP Certificado PHP

Referência PHP

Visão geral do PHP Matriz PHP Calendário PHP Data do PHP Diretório PHP Erro PHP Exceção PHP Sistema de arquivos PHP Filtro PHP PHP FTP PHP JSON Palavras-chave PHP PHP Libxml Correio PHP Matemática PHP PHP Diversos PHP MySQLi Rede PHP Controle de saída PHP PHP RegEx PHP SimpleXML Fluxo PHP String PHP Manipulação de variáveis ​​PHP Analisador XML PHP PHP Zip Fusos horários PHP

Função PHP crypt()


❮ Referência de String PHP

Definição e uso

A função crypt() retorna uma string com hash usando algoritmos DES, Blowfish ou MD5.

Esta função se comporta de forma diferente em diferentes sistemas operacionais. O PHP verifica quais algoritmos estão disponíveis e quais algoritmos usar quando for instalado.

O parâmetro salt é opcional. No entanto, crypt() cria uma senha fraca sem o salt. Certifique-se de especificar um sal forte o suficiente para melhor segurança.

Existem algumas constantes que são usadas junto com a função crypt(). O valor dessas constantes é definido pelo PHP quando ele é instalado.

Constantes:

  • [CRYPT_STD_DES] - Hash padrão baseado em DES com sal de dois caracteres do alfabeto "./0-9A-Za-z". O uso de caracteres inválidos no salt fará com que esta função falhe.
  • [CRYPT_EXT_DES] - Hash baseado em DES estendido com um sal de nove caracteres que consiste em um sublinhado seguido por 4 bytes de contagem de iteração e 4 bytes de sal. Estes são codificados como caracteres imprimíveis, 6 bits por caractere, primeiro o caractere menos significativo. Os valores de 0 a 63 são codificados como "./0-9A-Za-z". O uso de caracteres inválidos no salt fará com que a função falhe.
  • [CRYPT_MD5] - hash MD5 com um sal de 12 caracteres começando com $1$
  • [CRYPT_BLOWFISH] - Hash de baiacu com um sal começando com $2a$, $2x$ ou $2y$, um parâmetro de custo de dois dígitos "$" e 22 caracteres do alfabeto "./0-9A-Za-z" . O uso de caracteres fora do alfabeto fará com que essa função retorne uma string de comprimento zero. O parâmetro "$" é o logaritmo de base 2 da contagem de iteração para o algoritmo de hash baseado em Blowfish subjacente e deve estar no intervalo 04-31. Valores fora desse intervalo farão com que a função falhe.
  • [CRYPT_SHA_256] - Hash SHA-256 com um sal de 16 caracteres começando com $5$. Se a string salt começa com "rounds=<N>$", o valor numérico de N é usado para indicar quantas vezes o loop de hashing deve ser executado, assim como o parâmetro cost no Blowfish. O número padrão de rodadas é 5.000, há um mínimo de 1.000 e um máximo de 999.999.999. Qualquer seleção de N fora desse intervalo será truncada até o limite mais próximo.
  • [CRYPT_SHA_512] - hash SHA-512 com um sal de 16 caracteres começando com $6$. Se a string salt começa com "rounds=<N>$", o valor numérico de N é usado para indicar quantas vezes o loop de hashing deve ser executado, assim como o parâmetro cost no Blowfish. O número padrão de rodadas é 5.000, há um mínimo de 1.000 e um máximo de 999.999.999. Qualquer seleção de N fora desse intervalo será truncada até o limite mais próximo.

Em sistemas em que esta função oferece suporte a vários algoritmos, as constantes acima são definidas como "1" se houver suporte e "0" caso contrário.

Nota: Não há função de descriptografia. A função crypt() usa um algoritmo unidirecional.


Sintaxe

crypt(str,salt)

Valores de parâmetro

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Detalhes técnicos

Valor de retorno: Retorna a string codificada ou uma string com menos de 13 caracteres e com garantia de ser diferente do salt em caso de falha
Versão do PHP: 4+
Registro de alterações: PHP 5.6.0 - Mostra um aviso de segurança E_NOTICE se o sal for omitido.
PHP 5.3.7 - Adicionados modos Blowfish de $2x$ e $2y$.
PHP 5.3.2 - Adicionado SHA-256 e SHA-512. Corrigido o comportamento do Blowfish em rodadas inválidas retorna a string "failure" ("*0" ou "*1"), em vez de retornar ao DES.
PHP 5.3.0 - O PHP agora contém sua própria implementação para MD5 crypt, Standard DES, Extended DES e os algoritmos Blowfish e usará isso se o sistema não tiver suporte para um ou mais dos algoritmos.

Mais exemplos

Exemplo

Neste exemplo vamos testar os diferentes algoritmos:

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

A saída do código acima pode ser (dependendo do sistema operacional):

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ Referência de String PHP