2 votes

Faire du cryptage de message Javascript RSA donnant le même résultat

Bonjour, j'utilise un processus de cryptage RSA en javascript et cela fonctionne :

<!DOCTYPE html>
    <html lang="en">
            <head>
            <title></title>
              <script src="jquery-1.7.2.min.js" type="text/javascript"></script>
              <script type="text/javascript" src="base64.js"></script>
              <script type="text/javascript" src="asn1.js"></script>
              <script type="text/javascript" src="jsbn.js"></script>
              <script type="text/javascript" src="prng4.js"></script>
              <script type="text/javascript" src="rng.js"></script>
              <script type="text/javascript" src="rsa.js"></script>
              <script type="text/javascript" src="pemconvert.js"></script>
              <script>
                    function loadpubKey(){
                            var pubkey = "-----BEGIN PUBLIC KEY-----\nMFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAPBYvSszUjI5psKM958bHTDb+9NONv3X\nWVIGLR9/Al4j8/mqSDMhwFuu9oEyXl80+Ga2cohEQPpWyxzg3/tfGDUCAwEAAQ==\n-----END PUBLIC KEY-----";
                            $("#publicKey").html(pubkey);
                        }
                    function RSAEncryptData()
                        {
                            var Message = $("#Message_to_Encrypt").val();
                            var pubkey = pem_import($("#publicKey").val());             
                            $("#RSAMessageEncrypted").html(pubkey.encrypt(Message));
                        }
            </script>
            </head>
        <body onload="loadpubKey();">
        <h1>RSA Encryption/Decryption using library From :https://github.com/tao-software/jsrsa</h1>
        <form>
                <strong>Public key         :</strong> <textarea rows="3" cols="100"  id="publicKey"></textarea><br>
                <strong>Message to RSA encrypt :</strong> <textarea rows="3" cols="100"  id="Message_to_Encrypt"></textarea><br>
                <input type="button" value="RSA Encrypt" onclick="RSAEncryptData();">
                <strong>RSA encrypted Message :</strong> <textarea rows="3" cols="100"  id="RSAMessageEncrypted"></textarea><br>
        </form> 
        </body>
    </html>

Chaque fois que j'appuie sur le bouton "encrypter" en utilisant le même message à crypter, j'obtiens une nouvelle valeur cryptée différente. Que puis-je faire pour que ce cryptage donne le même résultat crypté pour le même message utilisé ?

En fait, ce que je veux faire, c'est crypter certains numéros de téléphone avec une clé publique en utilisant RSA, puis les stocker dans une table. Ensuite, je vais crypter tout numéro de téléphone que j'obtiendrai par un processus avec la même clé publique en RSA et regarder dans la table s'il y a une correspondance.

Avec le script ci-dessus, je ne trouverai jamais de correspondance même si je crypte le même numéro de téléphone plusieurs fois ; c'est pourquoi je veux que le résultat soit le même lors du cryptage du même numéro de téléphone. Toute idée est la bienvenue.

Merci d'avance.

1voto

Duncan Points 22780

Comme le dit Greg dans son commentaire En effet, le caractère aléatoire du rembourrage PKCS #1 fera que le résultat crypté variera à chaque fois.

En fonction de votre cas d'utilisation, je vous suggère de stocker un hachage du numéro de téléphone à côté des données cryptées. Vous pouvez ensuite effectuer une recherche rapide basée sur le hachage. Vous pouvez souhaiter saler vos numéros de téléphone avant de les hacher.

N'oubliez pas que l'unicité des hachages n'est pas garantie. Il y a donc une infime chance que vous obteniez deux hachages qui coïncident.

-1voto

GregS Points 16158

On dirait que vous voulez signe un message avec votre clé privée et que les autres vérifier la signature avec votre clé publique. Les bibliothèques que vous avez liées fournissent des méthodes RSASign et RSAVerify, éventuellement sous l'appellation sign y verify les méthodes d'un RSAKey instance. Je ne suis pas un programmeur JS donc tout ce que je peux dire c'est que c'est ce à quoi ça ressemble.

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