Maison interface Web js tutoriel Comment implémenter l'algorithme de chiffrement SHA-1 dans les compétences JavaScript_javascript

Comment implémenter l'algorithme de chiffrement SHA-1 dans les compétences JavaScript_javascript

May 16, 2016 pm 04:10 PM
javascript 加密 算法

L'exemple de cet article décrit comment implémenter l'algorithme de chiffrement SHA-1 en JavaScript. Partagez-le avec tout le monde pour votre référence. La méthode de mise en œuvre spécifique est la suivante :

Appelez simplement la méthode : hex_sha1.

Copier le code Le code est le suivant :
/*
 *
 * Une implémentation JavaScript de l'algorithme de hachage sécurisé, SHA-1, tel que défini
 * dans FIPS PUB 180-1
 *
 *Par lizq
 *
 *2006-11-11
 *
 */
/*
 *
 * Variables configurables.
 *
 */
var hexadécimal = 0 ; /* format de sortie hexadécimal. 0 - minuscule ; 1 - majuscule */
varchrsz = 8 ; /* bits par caractère d'entrée. 8 - ASCII ; 16 - Unicode */
/*
 *
 * La fonction principale pour calculer le résumé du message
 *
 */
fonction hex_sha1(s){
    return binb2hex(core_sha1(AlignSHA1(s)));
>
/*
 *
 * Effectuez un simple auto-test pour voir si la VM fonctionne
 *
 */
fonction sha1_vm_test(){
    return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
>
/*
 *
 * Calculez le SHA-1 d'un tableau de mots big-endian et une longueur en bits
 *
 */
fonction core_sha1(blockArray){
    var x = blockArray; // ajoute un remplissage
    var w = Tableau(80);
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    var e = -1009589776;
    pour (var i = 0; i < x.length; i = 16) // 每次处理512位 16*32
    {
        var vieuxa = a;
        var vieuxb = b;
        var vieuxc = c;
        var vieuxd = d;
        var vieux = e;
        pour (var j = 0; j < 80; j ) // 对每个512位进行80步操作
        {
            si (j < 16)
                w[j] = x[je j];
            d'autre
                w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
            var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
            e = d;
            d = c;
            c = rôle(b, 30);
            b = une;
            une = t;
        >
        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
        e = safe_add(e, ancien);
    >
    renvoyer un nouveau tableau (a, b, c, d, e);
>
/*
 *
 * Effectuer la fonction de combinaison de triplet appropriée pour le courant
 *itération
 *
 * 返回对应F函数的值
 *
 */
fonction sha1_ft(t, b, c, d){
    si (t < 20)
        retour (b & c) | ((~ b) & d);
    si (t < 40)
        retourner b ^ c ^ d;
    si (t < 60)
        retour (b & c) | (b&d) | (c&d);
    retourner b ^ c ^ d; //t<80
>
/*
 *
 * Déterminer la constante additive appropriée pour l'itération actuelle
 *
 * 返回对应的Kt值
 *
 */
fonction sha1_kt(t){
    retour (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
>
/*
 *
 * Ajoutez des nombres entiers, en retournant à 2 ^ 32. Cela utilise des opérations 16 bits en interne
 *
 * pour contourner les bugs de certains interpréteurs JS.
 *
 * 将32位数拆成高16位和低16位分别进行相加,从而实现 MOD 2^32 的加法
 *
 */
fonction safe_add(x, y){
    var lsw = (x & 0xFFFF) (y & 0xFFFF);
    var msw = (x >> 16) (y >> 16) (lsw >> 16);
    retour (msw << 16) | (lsw & 0xFFFF);
>
/*
 *
 * Faites pivoter au niveau du bit un nombre de 32 bits vers la gauche.
 *
 * 32位二进制数循环左移
 *
 */
fonction rol(num, cnt){
    retour (num << cnt) | (num >>> (32 - cnt));
>
/*
 *
 * Le SHA1 standard a besoin que la chaîne d'entrée tienne dans un bloc
 *
 * Cette fonction aligne la chaîne d'entrée pour répondre à l'exigence
 *
 */
fonction AlignSHA1(str){
    var nblk = ((str.length 8) >> 6) 1, blks = new Array(nblk * 16);
    pour (var i = 0; i < nblk * 16; i )
        blks[i] = 0;
    pour (i = 0; i < str.length; i )
        blks[je >> 2] |= str.charCodeAt(i) << (24 - (i & 3) * 8);
    blks[je >> 2] |= 0x80 ≪≪ (24 - (i & 3) * 8);
    blks[nblk * 16 - 1] = str.length * 8;
    retournez les noirs ;
>
/*
 *
 * Convertissez un tableau de mots big-endian en chaîne hexadécimale.
 *
 */
fonction binb2hex(binarray){
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    pour (var i = 0; i < binarray.length * 4; i ) {
        str = hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 4)) & 0xF)
        hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
    >
    retourner str;
>
/*
 *
 * calculer l'accord MessageDigest au message source entré
 *
 */
fonction calcDigest(){
    var digestM = hex_sha1(document.SHAForm.SourceMessage.value);
    document.SHAForm.MessageDigest.value = digestM;
>

希望本文所述对大家的javascript程序设计有所帮助。

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

CLIP-BEVFormer : superviser explicitement la structure BEVFormer pour améliorer les performances de détection à longue traîne CLIP-BEVFormer : superviser explicitement la structure BEVFormer pour améliorer les performances de détection à longue traîne Mar 26, 2024 pm 12:41 PM

Écrit ci-dessus et compréhension personnelle de l'auteur : À l'heure actuelle, dans l'ensemble du système de conduite autonome, le module de perception joue un rôle essentiel. Le véhicule autonome roulant sur la route ne peut obtenir des résultats de perception précis que via le module de perception en aval. dans le système de conduite autonome, prend des jugements et des décisions comportementales opportuns et corrects. Actuellement, les voitures dotées de fonctions de conduite autonome sont généralement équipées d'une variété de capteurs d'informations de données, notamment des capteurs de caméra à vision panoramique, des capteurs lidar et des capteurs radar à ondes millimétriques pour collecter des informations selon différentes modalités afin d'accomplir des tâches de perception précises. L'algorithme de perception BEV basé sur la vision pure est privilégié par l'industrie en raison de son faible coût matériel et de sa facilité de déploiement, et ses résultats peuvent être facilement appliqués à diverses tâches en aval.

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Jun 03, 2024 pm 01:25 PM

Les défis courants rencontrés par les algorithmes d'apprentissage automatique en C++ incluent la gestion de la mémoire, le multithread, l'optimisation des performances et la maintenabilité. Les solutions incluent l'utilisation de pointeurs intelligents, de bibliothèques de threads modernes, d'instructions SIMD et de bibliothèques tierces, ainsi que le respect des directives de style de codage et l'utilisation d'outils d'automatisation. Des cas pratiques montrent comment utiliser la bibliothèque Eigen pour implémenter des algorithmes de régression linéaire, gérer efficacement la mémoire et utiliser des opérations matricielles hautes performances.

Explorez les principes sous-jacents et la sélection d'algorithmes de la fonction de tri C++ Explorez les principes sous-jacents et la sélection d'algorithmes de la fonction de tri C++ Apr 02, 2024 pm 05:36 PM

La couche inférieure de la fonction de tri C++ utilise le tri par fusion, sa complexité est O(nlogn) et propose différents choix d'algorithmes de tri, notamment le tri rapide, le tri par tas et le tri stable.

L'intelligence artificielle peut-elle prédire la criminalité ? Explorez les capacités de CrimeGPT L'intelligence artificielle peut-elle prédire la criminalité ? Explorez les capacités de CrimeGPT Mar 22, 2024 pm 10:10 PM

La convergence de l’intelligence artificielle (IA) et des forces de l’ordre ouvre de nouvelles possibilités en matière de prévention et de détection de la criminalité. Les capacités prédictives de l’intelligence artificielle sont largement utilisées dans des systèmes tels que CrimeGPT (Crime Prediction Technology) pour prédire les activités criminelles. Cet article explore le potentiel de l’intelligence artificielle dans la prédiction de la criminalité, ses applications actuelles, les défis auxquels elle est confrontée et les éventuelles implications éthiques de cette technologie. Intelligence artificielle et prédiction de la criminalité : les bases CrimeGPT utilise des algorithmes d'apprentissage automatique pour analyser de grands ensembles de données, identifiant des modèles qui peuvent prédire où et quand les crimes sont susceptibles de se produire. Ces ensembles de données comprennent des statistiques historiques sur la criminalité, des informations démographiques, des indicateurs économiques, des tendances météorologiques, etc. En identifiant les tendances qui pourraient échapper aux analystes humains, l'intelligence artificielle peut donner du pouvoir aux forces de l'ordre.

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Jun 06, 2024 pm 12:33 PM

01Aperçu des perspectives Actuellement, il est difficile d'atteindre un équilibre approprié entre efficacité de détection et résultats de détection. Nous avons développé un algorithme YOLOv5 amélioré pour la détection de cibles dans des images de télédétection optique haute résolution, en utilisant des pyramides de caractéristiques multicouches, des stratégies de têtes de détection multiples et des modules d'attention hybrides pour améliorer l'effet du réseau de détection de cibles dans les images de télédétection optique. Selon l'ensemble de données SIMD, le mAP du nouvel algorithme est 2,2 % meilleur que YOLOv5 et 8,48 % meilleur que YOLOX, permettant ainsi d'obtenir un meilleur équilibre entre les résultats de détection et la vitesse. 02 Contexte et motivation Avec le développement rapide de la technologie de télédétection, les images de télédétection optique à haute résolution ont été utilisées pour décrire de nombreux objets à la surface de la Terre, notamment des avions, des voitures, des bâtiments, etc. Détection d'objets dans l'interprétation d'images de télédétection

Application d'algorithmes dans la construction de 58 plateformes de portraits Application d'algorithmes dans la construction de 58 plateformes de portraits May 09, 2024 am 09:01 AM

1. Contexte de la construction de la plateforme 58 Portraits Tout d'abord, je voudrais partager avec vous le contexte de la construction de la plateforme 58 Portraits. 1. La pensée traditionnelle de la plate-forme de profilage traditionnelle ne suffit plus. La création d'une plate-forme de profilage des utilisateurs s'appuie sur des capacités de modélisation d'entrepôt de données pour intégrer les données de plusieurs secteurs d'activité afin de créer des portraits d'utilisateurs précis. Elle nécessite également l'exploration de données pour comprendre le comportement et les intérêts des utilisateurs. et besoins, et fournir des capacités côté algorithmes ; enfin, il doit également disposer de capacités de plate-forme de données pour stocker, interroger et partager efficacement les données de profil utilisateur et fournir des services de profil. La principale différence entre une plate-forme de profilage d'entreprise auto-construite et une plate-forme de profilage de middle-office est que la plate-forme de profilage auto-construite dessert un seul secteur d'activité et peut être personnalisée à la demande. La plate-forme de mid-office dessert plusieurs secteurs d'activité et est complexe ; modélisation et offre des fonctionnalités plus générales. 2.58 Portraits d'utilisateurs de l'arrière-plan de la construction du portrait sur la plate-forme médiane 58

Comment chiffrer le package compressé dans la méthode de package compressé chiffré winrar-winrar Comment chiffrer le package compressé dans la méthode de package compressé chiffré winrar-winrar Mar 23, 2024 pm 12:10 PM

L'éditeur vous présentera trois méthodes de cryptage et de compression : Méthode 1 : cryptage La méthode de cryptage la plus simple consiste à saisir le mot de passe que vous souhaitez définir lors du cryptage du fichier, et le cryptage et la compression sont terminés. Méthode 2 : Cryptage automatique La méthode de cryptage ordinaire nous oblige à saisir un mot de passe lors du cryptage de chaque fichier. Si vous souhaitez crypter un grand nombre de packages compressés et que les mots de passe sont les mêmes, nous pouvons définir le cryptage automatique dans WinRAR, puis juste quand. En compressant les fichiers normalement, WinRAR ajoutera un mot de passe à chaque package compressé. La méthode est la suivante : ouvrez WinRAR, cliquez sur Options-Paramètres dans l'interface de configuration, passez à [Compression], cliquez sur Créer un mot de passe de configuration par défaut. Entrez le mot de passe que nous voulons définir ici, cliquez sur OK pour terminer le réglage, nous n'avons besoin que de corriger

Algorithme de recommandation d'actualités basé sur l'amélioration globale des graphiques Algorithme de recommandation d'actualités basé sur l'amélioration globale des graphiques Apr 08, 2024 pm 09:16 PM

Auteur | Évalué par Wang Hao | L'application Chonglou News est un moyen important pour les gens d'obtenir des sources d'informations dans leur vie quotidienne. Vers 2010, les applications d'information étrangères populaires comprenaient Zite et Flipboard, tandis que les applications d'information nationales populaires étaient principalement les quatre principaux portails. Avec la popularité des produits de recommandation d'actualités d'une nouvelle ère représentés par Toutiao, les applications d'actualités sont entrées dans une nouvelle ère. Quant aux entreprises technologiques, quelle qu'elles soient, tant qu'elles maîtrisent la technologie sophistiquée des algorithmes de recommandation d'actualités, elles auront fondamentalement l'initiative et la voix au niveau technique. Aujourd'hui, jetons un coup d'œil à un article du RecSys2023 Best Long Paper Nomination Award : GoingBeyondLocal:GlobalGraph-EnhancedP.

See all articles