Maison développement back-end tutoriel php PHP的des加密+ ECB方式+PKCS5 补齐

PHP的des加密+ ECB方式+PKCS5 补齐

Jun 13, 2016 pm 12:42 PM
data input mcrypt text

PHP的des加密+ ECB模式+PKCS5 补齐

/**
 * 
 * 加密函数
 * 算法:des
 * 加密模式:ecb
 * 补齐方法:PKCS5
 * 
 * @param unknown_type $input
 */
function encryptDesEcbPKCS5($input, $key) 
{ 
    $size = mcrypt_get_block_size('des', 'ecb'); 
    $input = pkcs5_pad($input, $size); 
    
    $td = mcrypt_module_open('des', '', 'ecb', ''); 
    //$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 
    $iv = 0;
    mcrypt_generic_init($td, $key, $iv); 
    $data = mdecrypt_generic ($td, $input); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 
    //$data = base64_encode($data); 
    return $data; 
} 

/**
 * 解密函数
 * 算法:des
 * 加密模式:ecb
 * 补齐方法:PKCS5
 * @param unknown_type $input
 */
function decryptDesEcbPKCS5($input, $key) 
{ 
    $size = mcrypt_get_block_size('des', 'ecb'); 
   
    $td = mcrypt_module_open('des', '', 'ecb', ''); 
    $iv = 0;
    mcrypt_generic_init($td, $key, $iv); 
    $data = mcrypt_generic($td, $input); 
    mcrypt_generic_deinit($td); 
    mcrypt_module_close($td); 
    $data = pkcs5_unpad($data, $size); 
    //$data = base64_encode($data); 
    return $data; 
} 

function pkcs5_pad ($text, $blocksize) 
{ 
    $pad = $blocksize - (strlen($text) % $blocksize); 
    return $text . str_repeat(chr($pad), $pad); 
} 

function pkcs5_unpad($text) 
{ 
    $pad = ord($text{strlen($text) - 1}); 
    if ($pad > strlen($text)) 
    	return false; 
    if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) 
    	return false; 
    return substr($text, 0, -1 * $pad); 
} 

$str = 'test crypt';
$key = 'jack11';
$res = encryptDesEcbPKCS5($str, $key);
echo "$res\n";


$deRes = decryptDesEcbPKCS5($res, $key);

echo "\n$deRes\n";
Copier après la connexion

?

PHP的DES加密的补齐比较特殊,而且不能指定

http://www.herongyang.com/Cryptography/DES-PHP-Block-Padding-in-mcrypt.html

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment remplacer mcrypt en php Comment remplacer mcrypt en php Oct 31, 2022 am 09:46 AM

Comment remplacer mcrypt par php : 1. Ouvrez le fichier php correspondant ; 2. Recherchez le code de cryptage et de décryptage d'origine ; 3. Utilisez les méthodes "openssl_encrypt" et "openssl_decrypt" pour le remplacer.

Comment encapsuler les composants d'entrée et les données de formulaire unifié dans vue3 Comment encapsuler les composants d'entrée et les données de formulaire unifié dans vue3 May 12, 2023 pm 03:58 PM

Préparation Utilisez vuecreateexample pour créer un projet. Les paramètres sont à peu près les suivants : utiliser l'entrée native est principalement la valeur et le changement. Les données doivent être synchronisées lors du changement. App.tsx est le suivant : import{ref}from'vue';exportdefault{setup(){//username est la donnée constusername=ref('Zhang San');//Lorsque la zone de saisie change, synchronisez les données constonInput =;retour( )=>({

Comment implémenter le champ caché d'entrée Laravel Comment implémenter le champ caché d'entrée Laravel Dec 12, 2022 am 10:07 AM

Comment implémenter le champ caché d'entrée Laravel : 1. Recherchez et ouvrez le fichier de modèle Blade ; 2. Utilisez la méthode method_field dans le modèle Blade pour créer un champ masqué. La syntaxe de création est "{{ method_field('DELETE') }}. ".

Explication détaillée des événements de liaison de zone de saisie dans les documents Vue Explication détaillée des événements de liaison de zone de saisie dans les documents Vue Jun 21, 2023 am 08:12 AM

Vue.js est un framework JavaScript léger, facile à utiliser, efficace et flexible. Il s'agit actuellement de l'un des frameworks front-end les plus populaires. Dans Vue.js, les événements de liaison de zone de saisie sont une exigence très courante. Cet article présentera en détail les événements de liaison de zone de saisie dans le document Vue. 1. Concepts de base Dans Vue.js, l'événement de liaison de la zone de saisie fait référence à la liaison de la valeur de la zone de saisie à l'objet de données de l'instance Vue, réalisant ainsi une liaison bidirectionnelle de l'entrée et de la réponse. Dans Vue.j

Que faire s'il n'y a pas de curseur lorsque vous cliquez sur la zone de saisie Que faire s'il n'y a pas de curseur lorsque vous cliquez sur la zone de saisie Nov 24, 2023 am 09:44 AM

Solutions pour cliquer sur la zone de saisie sans curseur : 1. Confirmez le focus de la zone de saisie ; 2. Effacez le cache du navigateur 3. Mettez à jour le navigateur 4. Utilisez JavaScript 5. Vérifiez le périphérique matériel ; propriétés de la boîte ; 7. Débogage du code JavaScript ; 8. Vérifiez les autres éléments de la page ;

Comment utiliser l'événement de retour chariot de la zone de saisie et la fonction de vérification dans le document Vue Comment utiliser l'événement de retour chariot de la zone de saisie et la fonction de vérification dans le document Vue Jun 20, 2023 am 09:13 AM

Vue est un framework frontal JavaScript populaire avec en son cœur une liaison de données réactive et un système de composants. Dans les applications Vue, la zone de saisie est l'un des éléments d'interface utilisateur les plus couramment utilisés. Lorsque l'utilisateur saisit du texte, nous espérons écouter l'événement de retour chariot et valider la saisie avant de la soumettre. Cet article présentera l'utilisation de la fonction de saisie d'événement et de vérification dans la zone de saisie dans le document Vue. 1. L'événement de retour chariot de la zone de saisie dans Vue La surveillance de l'événement de retour chariot de la zone de saisie dans Vue est très simple.

Quelles données se trouvent dans le dossier de données ? Quelles données se trouvent dans le dossier de données ? May 05, 2023 pm 04:30 PM

Le dossier de données contient des données du système et du programme, telles que les paramètres logiciels et les packages d'installation. Chaque dossier du dossier Données représente un type différent de dossier de stockage de données, que le fichier de données fasse référence au nom de fichier Données ou à l'extension Données nommées. , ce sont tous des fichiers de données personnalisés par le système ou le programme. Les données sont un fichier de sauvegarde pour le stockage des données. Généralement, elles peuvent être ouvertes avec meidaplayer, le bloc-notes ou Word.

Quel est l'élément d'entrée dans jquery ? Quel est l'élément d'entrée dans jquery ? Jun 06, 2023 pm 02:18 PM

Dans jquery, l'entrée est un sélecteur qui sélectionne les éléments du formulaire. Ses fonctions sont : 1. L'entrée est utilisée pour collecter des informations utilisateur Selon différentes valeurs d'attribut de type, le champ de saisie a de nombreuses formes. case à cocher ou un masque. Les contrôles de texte, les boutons radio, les boutons, etc. après les images cliquables et les boutons de soumission, etc.

See all articles