Comment utiliser la fonction Mhash en PHP

醉折花枝作酒筹
Libérer: 2023-03-10 09:46:01
avant
2273 Les gens l'ont consulté

Cet article vous présentera comment utiliser la fonction Mhash en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser la fonction Mhash en PHP

Ce que nous allons apprendre cette fois, c'est une autre extension de cryptage Hash. Cependant, cette extension Mhash a été intégrée à l'extension Hash. Dans le même temps, il convient de noter que cette extension n'est plus recommandée. Il convient d'utiliser directement les fonctions de l'extension Hash pour effectuer des opérations de chiffrement Hash. Par conséquent, nous comprenons encore aujourd’hui dans le but d’apprendre. Concernant le contenu de l’extension Hash, nous pouvons consulter l’article précédent : PHP Hash Information Summary Extension Framework.

Utilisation de la fonction de hachage cryptographique

$hash = mhash(MHASH_MD5, "测试Mhash");
echo $hash, PHP_EOL;
echo bin2hex($hash), PHP_EOL;
// /�8�><�۠�P4q�j�
// 2fcb38e93e3cc8dba09f503471846a9d

$hash = hash(&#39;md5&#39;, "测试Mhash");
echo $hash, PHP_EOL;
// 2fcb38e93e3cc8dba09f503471846a9d

$hash = mhash(MHASH_MD5, "测试Mhash", &#39;hmac secret&#39;);
echo $hash, PHP_EOL;
echo bin2hex($hash), PHP_EOL;
// �k�<F�m �OM����
// b86bb83c46b76d09be4f4daf18ebfe85
Copier après la connexion

Comme le montre le code, l'utilisation de la fonction mhash() et hash() sont très similaires. leurs fonctions Même chose. Cependant, ce qui est chiffré par la fonction mhash() est directement binaire. Après avoir converti ce contenu en hexadécimal via bin2hex(), nous pouvons voir que la structure chiffrée par la fonction hash() ordinaire est exactement la même.

Lorsque vous effectuez le cryptage hmac, ajoutez simplement la clé directement au troisième paramètre.

Parcourez tous les types d'algorithmes pris en charge

Bien sûr, tout comme le cryptage Hash, le cryptage Mhash peut également choisir différents algorithmes. Nous pouvons également utiliser directement les fonctions pertinentes pour voir les algorithmes de cryptage pris en charge dans l'environnement actuel.

echo mhash_count(), PHP_EOL;

$nr = mhash_count(); // 33

for ($i = 0; $i <= $nr; $i++) {
    echo sprintf("Hash:%s,块大小为: %d\n",
        mhash_get_hash_name($i),
        mhash_get_block_size($i));
}
// Hash:CRC32,块大小为: 4
// Hash:MD5,块大小为: 16
// Hash:SHA1,块大小为: 20
// Hash:HAVAL256,块大小为: 32
// Hash:,块大小为: 0
// Hash:RIPEMD160,块大小为: 20
// Hash:,块大小为: 0
// Hash:TIGER,块大小为: 24
// Hash:GOST,块大小为: 32
// Hash:CRC32B,块大小为: 4
// Hash:HAVAL224,块大小为: 28
// Hash:HAVAL192,块大小为: 24
// Hash:HAVAL160,块大小为: 20
// Hash:HAVAL128,块大小为: 16
// Hash:TIGER128,块大小为: 16
// Hash:TIGER160,块大小为: 20
// Hash:MD4,块大小为: 16
// Hash:SHA256,块大小为: 32
// Hash:ADLER32,块大小为: 4
// Hash:SHA224,块大小为: 28
// Hash:SHA512,块大小为: 64
// Hash:SHA384,块大小为: 48
// Hash:WHIRLPOOL,块大小为: 64
// Hash:RIPEMD128,块大小为: 16
// Hash:RIPEMD256,块大小为: 32
// Hash:RIPEMD320,块大小为: 40
// Hash:,块大小为: 0
// Hash:SNEFRU256,块大小为: 32
// Hash:MD2,块大小为: 16
// Hash:FNV132,块大小为: 4
// Hash:FNV1A32,块大小为: 4
// Hash:FNV164,块大小为: 8
// Hash:FNV1A64,块大小为: 8
// Hash:JOAAT,块大小为: 4
Copier après la connexion

PHP fournit également de nombreuses constantes pour représenter ces algorithmes, comme le MHASH_MD5 que nous avons utilisé dans le code précédent. En fait, ajoutez simplement MHASH_ devant le contenu que nous parcourons. La liste spécifique des constantes prises en charge se trouve dans le manuel officiel, nous ne la copierons donc pas et ne la collerons pas ici.

L'algorithme Salted S2K génère un résumé de mot de passe

De plus, Mhash nous fournit également un algorithme Salted S2K très pratique qui peut être utilisé pour générer facilement un ensemble très pratique de Le mot de passe crypte le contenu.

// OpenPGP 指定的 Salted S2K 算法
$hashPassword = mhash_keygen_s2k(MHASH_SHA1, &#39;我的密码&#39;, random_bytes(2), 4);
echo $hashPassword, PHP_EOL;
echo bin2hex($hashPassword), PHP_EOL;
// �-!=
// 101ab899
Copier après la connexion

Bien sûr, cet algorithme est également relativement sûr, avec un paramètre salt, et il peut spécifier la longueur des données renvoyées. Il renvoie également des données binaires. Si vous devez enregistrer du contenu texte standard, vous devez le convertir au format hexadécimal. Mais relativement parlant, je pense qu'il est plus sûr de générer directement du contenu binaire.

Résumé

Différentes fonctions ont différents scénarios d'application, mais en fait, Mhash n'a pas de scénarios d'application spéciaux. Après tout, les fonctions associées dans l'extension Hash sont entièrement capables. Il a remplacé sa fonction, il est plus riche et plus simple à utiliser. Si vous constatez l'utilisation de ces fonctions dans d'anciens projets, vous pouvez progressivement les remplacer par de nouvelles fonctions grâce à la reconstruction.

Code de test :

https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84Mhash%E6%89%A9%E5%B1%95%E5%87%BD%E6%95%B0%E7%9A%84%E5%AD%A6%E4%B9%A0.php
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

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:
php
source:segmentfault.com
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