Ce tutoriel montre comment crypter de gros messages à l'aide de clés asymétriques et de la bibliothèque PhPSeclib.
Le cryptage asymétrique, comme RSA, résout les défis de distribution clés en utilisant une clé publique pour le cryptage et une clé privée pour le déchiffrement. Cela permet un partage de clé public sûr, car seul le titulaire de la clé privée peut décrypter.
La limitation de laRSA est sa capacité de texte en clair restreint; Une clé de 2048 bits gère généralement un maximum de 256 octets.
Le cryptage hybride (combinant des méthodes symétriques et asymétriques) surmonte cela. Une clé symétrique crypte le message, alors cette clé symétrique est chiffrée avec la clé publique du destinataire et annexée. Le destinataire décrypte la clé symétrique à l'aide de sa clé privée, puis l'utilise pour décrypter le message.
PHP Secure Communications Library (PHPSECLIB) est une bibliothèque d'open source gratuite offrant des implémentations pur-php de divers algorithmes de chiffrement, y compris RSA et des algorithmes symétriques (DES, AES). Il prend en charge le chiffrement hybride et les fonctions de manière fiable même sans extensions de cryptage plus rapides.
crypter des données sensibles avant la transmission est cruciale. Le chiffrement convertit le texte en clair (données normales) en texte chiffré (données secrètes) à l'aide d'une clé et d'un algorithme. Le décryptage inverse ce processus.
L'algorithme de chiffrement applique des opérations mathématiques aux valeurs numériques de la clé et du texte en clair pour produire un texte chiffré. Des clés plus grandes améliorent la sécurité.
La distribution des clés est un défi essentiel: comment transmettre des clés en toute sécurité aux destinataires autorisés? La solution dépend de l'algorithme et du type de clé.
Deux types d'algorithmes de chiffrement principaux existent:
Les algorithmes forts reposent sur des mathématiques avancées. La résistance est déterminée par le temps requis pour le déchiffrement sans la clé. L'Institut national des normes et de la technologie (NIST) fournit des recommandations. Les algorithmes asymétriques courants comprennent la RSA et le DSA, avec RSA souvent préféré commercialement en raison de son évolutivité. Rijndael (AES) est un algorithme symétrique largement utilisé.
Bien que les algorithmes asymétriques résolvent la distribution des clés, RSA a une capacité de chiffrement en texte en clair limité. Une clé de 2048 bits ne peut crypter que jusqu'à 256 octets.
La solution optimale combine le cryptage symétrique et asymétrique:
Le destinataire inverse le processus: décrypte la clé symétrique avec leur clé privée, puis décrypte le message.
Cet exemple utilise la bibliothèque PHP Secure Communications (PHPSeclib). Installez-le via le compositeur. La documentation est à https://www.php.cn/link/4662efebaa2ef1b42bb1097a941393ef .
$rsa = new Crypt_RSA(); $keys = $rsa->createKey(2048); file_put_contents('key.pri', $keys['privatekey']); file_put_contents('key.pub', $keys['publickey']);
function encrypt_message($plaintext, $asym_key, $key_length = 150) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $sym_key = crypt_random_string($key_length); $rij->setKey($sym_key); $ciphertext = $rij->encrypt($plaintext); $ciphertext = base64_encode($ciphertext); $rsa->loadKey($asym_key); $sym_key = $rsa->encrypt($sym_key); $sym_key = base64_encode($sym_key); $len = strlen($sym_key); $len = dechex($len); $len = str_pad($len, 3, '0', STR_PAD_LEFT); $message = $len . $sym_key . $ciphertext; return $message; }
function decrypt_message($message, $asym_key) { $rsa = new Crypt_RSA(); $rij = new Crypt_Rijndael(); $len = substr($message, 0, 3); $len = hexdec($len); $sym_key = substr($message, 0, $len); $message = substr($message, 3); $ciphertext = substr($message, $len); $ciphertext = base64_decode($ciphertext); $rsa->loadKey($asym_key); $sym_key = base64_decode($sym_key); $sym_key = $rsa->decrypt($sym_key); $rij->setKey($sym_key); $plaintext = $rij->decrypt($ciphertext); return $plaintext; }
La communication de données sécurisée est essentielle. Le cryptage hybride, tirant parti des algorithmes symétriques et asymétriques, offre une solution robuste. PHPSECLIB fournit un outil fiable et polyvalent pour implémenter cette approche dans PHP. Le code source est disponible sur github (lien fourni dans le texte d'origine).
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!