Maison >développement back-end >Problème PHP >Comment utiliser la fonction Mhash en PHP

Comment utiliser la fonction Mhash en PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-02 18:01:562319parcourir

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

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer