Maison > développement back-end > tutoriel php > Opérations de cryptage et de décryptage des données PHP

Opérations de cryptage et de décryptage des données PHP

PHPz
Libérer: 2023-06-30 13:02:02
original
3436 Les gens l'ont consulté

PHP, en tant que langage de script côté serveur populaire, nécessite le cryptage et le déchiffrement des données pour garantir la sécurité des données lors du traitement des données sensibles. Cet article présentera comment PHP effectue le cryptage et le déchiffrement des données.

  1. Utilise un algorithme de cryptage symétrique
    L'algorithme de cryptage symétrique utilise la même clé pour le cryptage et le déchiffrement. En PHP, les opérations de chiffrement et de déchiffrement symétriques peuvent être effectuées à l'aide de l'algorithme AES (Advanced Encryption Standard). Les étapes spécifiques sont les suivantes :

(1) Générer la clé AES :

$key = random_bytes(32);  // 生成一个32字节长的随机密钥
Copier après la connexion

(2) Crypter les données :

$data = "敏感数据";
$encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);  // 加密数据
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));  // 生成一个随机的初始向量
Copier après la connexion

(3) Décrypter les données :

$decrypted = openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);  // 解密数据
Copier après la connexion
  1. Utiliser un algorithme de cryptage asymétrique
    L'algorithme de cryptage asymétrique utilise le public. la clé est utilisée pour le cryptage et la clé privée est utilisée pour le déchiffrement. En PHP, vous pouvez utiliser l'algorithme RSA (Rivest-Shamir-Adleman) pour les opérations de chiffrement et de déchiffrement asymétriques. Les étapes spécifiques sont les suivantes :

(1) Générer une paire de clés RSA :

$config = array(
    "digest_alg" => "sha512",
    "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$res = openssl_pkey_new($config);  // 生成RSA密钥对
openssl_pkey_export($res, $privateKey);  // 导出私钥
$publicKey = openssl_pkey_get_details($res)['key'];  // 获取公钥
Copier après la connexion

(2) Crypter les données :

$data = "敏感数据";
openssl_public_encrypt($data, $encrypted, $publicKey);  // 使用公钥加密数据
Copier après la connexion

(3) Décrypter les données :

openssl_private_decrypt($encrypted, $decrypted, $privateKey);  // 使用私钥解密数据
Copier après la connexion
  1. Utiliser l'algorithme de hachage
    L'algorithme de hachage est utilisé pour les données brutes sont converties en une chaîne de longueur fixe, généralement utilisée pour stocker des mots de passe ou vérifier l'intégrité des données. Les algorithmes de hachage couramment utilisés en PHP incluent MD5, SHA1 et SHA256. Les étapes spécifiques sont les suivantes :

(1) Calcul de hachage des données d'origine :

$data = "原始数据";
$hash = md5($data);  // 计算MD5哈希值
$hash = sha1($data);  // 计算SHA1哈希值
$hash = hash('sha256', $data);  // 计算SHA256哈希值
Copier après la connexion

(2) Vérifiez la valeur de hachage :

$hash = "存储的哈希值";
if (md5($data) === $hash) {
    echo "哈希值一致";
} else {
    echo "哈希值不一致";
}
Copier après la connexion

Résumé : PHP fournit une variété de cryptage et de décryptage lorsqu'il s'agit de méthodes de données sensibles , y compris les algorithmes de chiffrement symétriques, les algorithmes de chiffrement asymétriques et les algorithmes de hachage. Les développeurs peuvent choisir des algorithmes de chiffrement appropriés pour protéger la sécurité des données en fonction des besoins réels.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal