Le rôle du cryptage php
Cryptage : Afin de crypter les données, le texte brut ne sera pas vu .
Dans le processus de développement de PHP, il est souvent nécessaire de crypter certaines données (comme les mots de passe des utilisateurs)
Type de cryptage :
1. Le cryptage de hachage unidirectionnel
consiste à hacher le calcul d'informations de n'importe quelle longueur pour obtenir une sortie de longueur fixe. Ce processus de calcul de hachage est unidirectionnel, c'est-à-dire que les informations de sortie de longueur fixe ne peuvent pas l'être. calculé pour obtenir les informations de saisie.
(1) Caractéristiques : effet d'avalanche, sortie de longueur fixe et irréversibilité.
(2) Le rôle est d'assurer l'intégrité des données.
(3) Algorithme de cryptage : md5 (longueur de clé standard 128 bits), sha1 (longueur de clé standard 160 bits), md4, CRC-32
2. Cryptage de hachage symétrique
Le cryptage symétrique signifie que le cryptage et le déchiffrement utilisent la même clé, ou peuvent être déduits l'un de l'autre.
(1) La partie cryptage et la partie décryptage utilisent la même clé.
(2) La vitesse de cryptage et de décryptage est relativement rapide, adaptée à une utilisation à long terme des données.
(3) Le processus de transmission des clés est dangereux et facile à déchiffrer, et la gestion des clés est également gênante.
(4) Algorithmes de cryptage : DES (Data Encryption Standard), 3DES, AES (Advanced Encryption Standard, prend en charge le cryptage des clés de 128, 192, 256 et 512 bits), Blowfish.
3. Cryptage de hachage asymétrique
Le cryptage et le déchiffrement asymétriques utilisent des clés différentes, l'une d'elles est publique et est appelée clé publique, et l'autre n'est connue que du propriétaire et est appelée clé publique. clé publique comme clé privée.
(1) Chaque utilisateur dispose d'une paire de clés pour le cryptage : clé publique et clé privée.
(2) Cryptage à clé publique, déchiffrement à clé privée ; cryptage à clé privée, déchiffrement à clé publique.
(3) Le processus de transmission de la clé publique est dangereux et peut être facilement volé et remplacé.
(4) Étant donné que la longueur de clé utilisée par la clé publique est très longue, la vitesse de cryptage de la clé publique est très lente et elle n'est généralement pas utilisée pour le cryptage.
(5) Un certain utilisateur utilise sa clé privée pour chiffrer, et d'autres utilisateurs utilisent leur clé publique pour déchiffrer afin d'obtenir la fonction de signature numérique.
(6) Une autre fonction du cryptage à clé publique est de réaliser l'échange de clés.
(7) Algorithmes de cryptage et de signature : RSA, ELGamal.
(8) Algorithme de signature à clé publique : DSA.
Remarques :
(1) RSA : Inventé par la société RSA, il s'agit d'un algorithme à clé publique qui prend en charge les clés de longueur variable. La longueur du bloc de fichier qui doit être chiffré est également. variable;
(2) DSA (Digital Signature Algorithm) : Algorithme de signature numérique, un standard DSS (Digital Signature Standard
(3) Parce que les algorithmes de chiffrement asymétriques s'exécutent plus rapidement que les algorithmes de chiffrement symétriques ; L'algorithme de cryptage est beaucoup plus lent. Lorsque nous devons crypter une grande quantité de données, il est recommandé d'utiliser un algorithme de cryptage symétrique pour augmenter la vitesse de cryptage et de décryptage.
Les algorithmes de chiffrement symétriques ne peuvent pas implémenter de signatures, les signatures ne peuvent donc être que des algorithmes asymétriques.
(4) La gestion des clés de l'algorithme de chiffrement symétrique étant un processus complexe, la gestion de la clé détermine directement sa sécurité. Par conséquent, lorsque la quantité de données est faible, nous pouvons envisager d'utiliser un algorithme de chiffrement asymétrique.
(5) En fonctionnement réel, la façon dont nous utilisons habituellement est la suivante : utiliser un algorithme de cryptage asymétrique pour gérer la clé d'un algorithme symétrique, puis utiliser un algorithme de cryptage symétrique pour crypter les données, afin que nous intégrions les deux types d'algorithmes de cryptage présentent non seulement les avantages d'une vitesse de cryptage rapide, mais également les avantages d'une gestion des clés sûre et pratique.
2. Fonctions de cryptage couramment utilisées en php :
1.MD5 cryptage :
string md5 ( string $str [, bool $raw_output = false ] )
(1) md5() par défaut est 32 Renvoie le valeur de hachage sous forme de caractère hexadécimal. Il accepte deux paramètres. Le premier est la chaîne à chiffrer et le second est la valeur booléenne de raw_output
La valeur par défaut est false, si elle est définie sur true, md5(). renverra le résumé original du message au format binaire 16 bits
(2) md5() est un cryptage unidirectionnel et n'a pas d'algorithme de décryptage inverse, mais il peut toujours collecter certaines chaînes courantes, énumérations, collisions et autres méthodes pour craquer
2.Crypt cryptage :
string crypt ( string $str [, string $salt ] )
(1)crypt() accepte deux paramètres, le premier est la chaîne qui doit être cryptée, le second est la valeur salt (qui est la valeur d'interférence de chiffrement, si elle n'est pas fournie, elle est automatiquement générée par PHP par défaut) ;
renvoie une chaîne hachée ou une chaîne de moins de 13 caractères, cette dernière sert à distinguer la valeur salt .
(2)crypt() est un cryptage unidirectionnel, identique à md5.
3. Cryptage Sha1 :
string sha1 ( string $str [, bool $raw_output = false ])
(1) est très similaire à md5. La différence est que sha1() renvoie une valeur de hachage de 40 caractères par défaut et les propriétés des paramètres. transmis sont les mêmes. La première est la chaîne cryptée,
La seconde est la valeur booléenne de raw_output, la valeur par défaut est false, si elle est définie sur true, sha1() renverra le format original de 20 bits. résumé du message
(2)sha1() est également un cryptage sur une seule ligne, il n'y a pas d'algorithme de décryptage inverse
4 cryptage Urlencode :
string urlencode ( string $str )
(1) Un. paramètre, transmettez la chaîne à chiffrer (généralement utilisée pour chiffrer les URL)
(2) urlencode est un cryptage bidirectionnel et peut être crypté avec urldecode (à proprement parler, ce n'est pas un vrai cryptage)
(3) Chaîne de caractères renvoyée, tous les caractères non alphanumériques de cette chaîne sauf -_ seront remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, et les espaces sont codés sous forme de signes plus (+).
(3) Caractères de conversion urlencode() courants
? => %3F = => %3D % => %25 & => %26 \ => %5C 空格 => %5C
5.base64编码加密:
string base64_decode ( string $encoded_data )
(1)base64_encode()接受一个参数,也就是要编码的数据(这里不说字符串,是因为很多时候base64用来编码图片)
(2)base64_encode()为双向加密,可用base64_decode()来解密
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!