2个比较经典的PHP加密解密函数分享
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。
最常见的应用在用户登录以及一些API数据交换的场景。
笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家。加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果。
1、非常给力的authcode加密函数,Discuz!经典代码(带详解):
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; // 参与运算的密匙 $cryptkey = $keya.md5($keya.$keyc); $key_length = strlen($cryptkey); // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b), //解密时会通过这个密匙验证数据完整性 // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确 $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; $string_length = strlen($string); $result = ''; $box = range(0, 255); $rndkey = array(); // 产生密匙簿 for($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); } // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度 for($j = $i = 0; $i < 256; $i++) { $j = ($j + $box[$i] + $rndkey[$i]) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } // 核心加解密部分 for($a = $j = $i = 0; $i < $string_length; $i++) { $a = ($a + 1) % 256; $j = ($j + $box[$a]) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; // 从密匙簿得出密匙进行异或,再转成字符 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); } if($operation == 'DECODE') { // 验证数据有效性,请看未加密明文的格式 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { return substr($result, 26); } else { return ''; } } else { // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因 // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码 return $keyc.str_replace('=', '', base64_encode($result)); } }
函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密;$key:密匙;$expiry:密文有效期。
用法:
$str = 'abcdef'; $key = 'www.helloweba.com'; echo authcode($str,'ENCODE',$key,0); //加密 $str = '56f4yER1DI2WTzWMqsfPpS9hwyoJnFP2MpC8SOhRrxO7BOk'; echo authcode($str,'DECODE',$key,0); //解密
2、加解密函数encrypt():
function encrypt($string,$operation,$key=''){ $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++){ $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++){ $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++){ $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D'){ if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){ return substr($result,8); }else{ return''; } }else{ return str_replace('=','',base64_encode($result)); } }
函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。
用法:
$str = 'abc'; $key = 'www.helloweba.com'; $token = encrypt($str, 'E', $key); echo '加密:'.encrypt($str, 'E', $key); echo '解密:'.encrypt($str, 'D', $key);
更多2个比较经典的PHP加密解密函数分享相关文章请关注PHP中文网!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article est un didacticiel sur la façon de crypter et de décrypter des fichiers sans utiliser d'outils de cryptage et de décryptage tiers. Un didacticiel sur l'ajout de méthodes de cryptage et de décryptage au menu contextuel de Win11. Puisque le registre doit être modifié, vous devez le faire. une sauvegarde avant de continuer à fonctionner. 1. Tout d'abord, appuyez sur la combinaison de touches [Win+R] du clavier pour ouvrir Exécuter, puis entrez la commande [regedit] et appuyez sur [OK ou Entrée] pour ouvrir l'éditeur de registre. 2. Dans la fenêtre Contrôle de compte d'utilisateur, vous besoin d'autoriser Cette application apporte-t-elle des modifications à votre appareil ? Cliquez sur [Oui] ; 3. Dans la fenêtre de l'Éditeur du Registre, développez le chemin suivant : HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr.

Cryptage et déchiffrement des données sensibles à l'aide du middleware du framework Yii Introduction : Dans les applications Internet modernes, la confidentialité et la sécurité des données sont des problèmes très importants. Pour garantir que les données sensibles des utilisateurs ne soient pas accessibles à des visiteurs non autorisés, nous devons chiffrer ces données. Le framework Yii nous offre un moyen simple et efficace de mettre en œuvre les fonctions de cryptage et de décryptage des données sensibles. Dans cet article, nous expliquerons comment y parvenir en utilisant le middleware du framework Yii. Introduction au framework Yii Le framework Yii est un framework PHP hautes performances.

Titre : Cryptage et déchiffrement des données à l'aide de ReactQuery et de la base de données Introduction : Cet article explique comment utiliser ReactQuery et la base de données pour le cryptage et le déchiffrement des données. Nous utiliserons ReactQuery comme bibliothèque de gestion des données et la combinerons avec la base de données pour effectuer des opérations de cryptage et de décryptage des données. En combinant ces deux technologies, nous pouvons stocker et transmettre en toute sécurité des données sensibles, et effectuer des opérations de cryptage et de décryptage si nécessaire pour garantir la sécurité des données. Texte : 1. ReactQue

À mesure que les mini-programmes WeChat deviennent de plus en plus populaires sur le marché des applications mobiles, leur développement reçoit également de plus en plus d'attention. Dans les petits programmes, PHP, en tant que langage back-end couramment utilisé, est souvent utilisé pour gérer le cryptage et le déchiffrement des données sensibles. Cet article explique comment utiliser PHP pour implémenter le cryptage et le déchiffrement dans l'applet WeChat. 1. Que sont le cryptage et le décryptage ? Le cryptage est la conversion de données sensibles sous une forme illisible pour garantir que les données ne soient pas volées ou falsifiées pendant la transmission. Le décryptage est la restauration de données cryptées aux données originales. Dans les petits programmes, le cryptage et le déchiffrement incluent généralement

Développement de boîtes aux lettres PHP : réalisation de fonctions de cryptage et de décryptage des e-mails Avec le développement croissant de la transmission d'informations, le courrier électronique est devenu l'une des méthodes de communication importantes pour les personnes. Cependant, les problèmes de sécurité qui en ont résulté ont progressivement attiré l'attention de la population. Afin de protéger la sécurité des e-mails, le cryptage et le déchiffrement sont devenus des aspects importants de l’envoi et de la réception d’e-mails. Cet article explique comment utiliser PHP pour développer des fonctions de cryptage et de décryptage des e-mails afin d'améliorer la sécurité des e-mails. 1. Principe et fonction du cryptage Le cryptage des emails consiste à convertir le contenu de l'email à l'aide d'un algorithme spécifique afin qu'en plus du destinataire

Exemples de cryptage et de décryptage de données dans l'interface API PHP Tencent Cloud Server Avec l'application généralisée des serveurs cloud, de plus en plus de développeurs ont commencé à déployer leurs applications sur des serveurs cloud. Dans le processus d'amarrage avec l'interface API du serveur Tencent Cloud, le cryptage et le déchiffrement des données constituent un lien important. Cet article présentera un exemple de cryptage et de décryptage de données en PHP. Lors de la connexion à l'interface API du serveur Tencent Cloud, nous devons généralement chiffrer certaines données sensibles pour garantir la sécurité des données. En même temps, il faut aussi relever

Exemple de cryptage et de déchiffrement de données PHP pendant le processus d'interface de l'interface API du serveur Tencent Cloud : pendant le processus d'interface avec l'interface API de Tencent Cloud Server, la sécurité des données est très importante. Afin de garantir la sécurité des données lors de la transmission et du stockage, nous devons crypter les informations sensibles. Cet article expliquera comment utiliser PHP pour crypter et déchiffrer des données afin d'améliorer la confidentialité et l'intégrité des données. Cryptage des données : lorsque nous effectuons des requêtes API, nous devons crypter les informations sensibles pour garantir la sécurité des données. Couramment utilisé

Étude approfondie du cryptage et du décryptage des communications réseau des fonctions de développement de swoole. Avec le développement rapide d'Internet, les problèmes de sécurité des réseaux sont devenus de plus en plus importants, et le cryptage et le décryptage sont devenus un maillon indispensable dans les communications réseau. En tant que framework de communication réseau PHP hautes performances, Swoole offre une multitude de fonctions, notamment le cryptage et le déchiffrement des communications réseau. Le cryptage et le déchiffrement des communications réseau jouent un rôle important pour garantir la sécurité et l’intégrité de la transmission des données. Lors du développement, nous devons souvent chiffrer des informations sensibles et des données utilisateur pour empêcher les pirates informatiques et le vol.
