


des加密解密算法 - 怎么可以让php代码:62837 << -16 在windows和linux中得到相同的结果?
进行des加密操作,发现在windows和linux里得到的结果不一样,发现是createkey过程中有这个运算,从这里开始不一样的。
网络查询得知是int溢出导致,windows下是正确的。建议通过gmp扩展来操作,但是并未找到具体用法,求指教
win的结果:-176881664
lin的结果:-759700962142060544
@eechen
回复内容:
进行des加密操作,发现在windows和linux里得到的结果不一样,发现是createkey过程中有这个运算,从这里开始不一样的。
网络查询得知是int溢出导致,windows下是正确的。建议通过gmp扩展来操作,但是并未找到具体用法,求指教
win的结果:-176881664
lin的结果:-759700962142060544
@eechen
恭喜你掉到php的一个大坑了。
如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。
就是这个问题导致了各种匪夷所思的问题。
PHP 不支持无符号整数。
引用php原文
然而,你出现此问题是因为你两个系统的long型(php的int型在内核中均为long型)长度不一致(因为系统位数不一样)。
所以,你如要想解决此问题,就必须手动处理int到uint。
$flag=$int&0x80000000; //取出符号位,判断是否是负数,溢出int范围,但没溢出uint范围时,符号位为1,即为负数 if($flag){ $int ^= 0xffffffff; $int += 1; }
BTW,最新的php7修正了此问题,但php中无法移位一个负数。
不知道这段代码是从何而来的,左右移负数的代码是由CPU完成运算的,所以这里完全依赖机器,与系统关系都不大,看看能不能修正这段代码,或者只能是使用其他方法来代替左右移负数了。
所以从 php7 开始,位移一个负数会直接报错...

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)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c
