179 votes

Existe-t-il des implémentations javascript SHA-256 qui sont généralement considérées comme fiables ?

J'écris un login pour un forum, et j'ai besoin de hacher le mot de passe côté client en javascript avant de l'envoyer au serveur. J'ai du mal à trouver l'implémentation SHA-256 à laquelle je peux faire confiance. Je m'attendais à ce qu'il y ait une sorte de script faisant autorité et que tout le monde utilise, mais je trouve des tas de projets différents, tous avec leurs propres implémentations.

Je sais que l'utilisation de la cryptographie d'autres personnes est toujours un acte de foi, à moins que vous ne soyez qualifié pour l'examiner vous-même, et qu'il n'y a pas de définition universelle de "fiable", mais cela semble être quelque chose de commun et d'assez important pour qu'il y ait une sorte de consensus sur ce qu'il faut utiliser. Suis-je simplement naïf ?

Editer puisque cela revient souvent dans les commentaires : Oui, nous effectuons à nouveau un hachage plus rigoureux du côté serveur. Le hachage côté client n'est pas le résultat final que nous sauvegardons dans la base de données. Le hachage côté client est effectué parce que le client humain le demande. Ils n'ont pas donné de raison spécifique, probablement qu'ils aiment juste l'exagération.

13voto

rfcreader Points 361

J'ai trouvé cette mise en œuvre très facile à utiliser. Elle dispose également d'une licence généreuse de type BSD :

jsSHA : https://github.com/Caligatio/jsSHA

J'avais besoin d'un moyen rapide d'obtenir la représentation en chaîne hexagonale d'un hachage SHA-256. Cela n'a pris que 3 lignes :

var sha256 = new jsSHA('SHA-256', 'TEXT');
sha256.update(some_string_variable_to_hash);
var hash = sha256.getHash("HEX");

3voto

TitanFighter Points 1228

Il est possible d'utiliser CryptoJS - https://www.npmjs.com/package/crypto-js

import sha256 from 'crypto-js/sha256'

const hash = sha256('Text')

2voto

Faraway Points 412

En plus de la librairie de Stanford que Tylerl a mentionné. j'ai trouvé jsrsasign très utile (repo Github ici : https://github.com/kjur/jsrsasign ). Je ne sais pas s'il est exactement digne de confiance, mais j'ai utilisé son API de SHA256, Base64, RSA, x509 etc. et il fonctionne plutôt bien. En fait, il inclut également la librairie Stanford.

Si tout ce que vous voulez faire est SHA256, jsrsasign pourrait être une surenchère. Mais si vous avez d'autres besoins dans le même domaine, je pense que c'est une bonne solution.

2voto

js-sha256 est un paquet npm que vous pouvez utiliser, et contrairement au populaire crypto.subtle qui ne fonctionne que sur des connexions sécurisées (localhost/https), il peut fonctionner indépendamment. Bien sûr, avoir une connexion sécurisée est toujours le mieux. J'utilisais crypto.subtle et il a toujours fonctionné parce que je fais tourner mon application web en utilisant localhost et il a échoué dès que je l'ai essayé sur un serveur. J'ai dû passer au paquet npm js-sha256 comme solution temporaire jusqu'à ce qu'une connexion sécurisée puisse être configurée.

1voto

nnsk Points 35

Ethers.js a un code SHA256 ( https://docs.ethers.io/v5/api/utils/hashing/ )

const { ethers } = require('ethers');
ethers.utils.sha256(ethers.utils.toUtf8Bytes('txt'));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X