Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Crittazione RSA con javascript e php

    Buonasera a tutti.
    Tale discussione è a metà tra php e javascript. Non esistendo una sezione condivisa utilizzo quella javascript poichè il problema che ho è relativo proprio a javascript.

    A scopo di esercizio vorrei creare un form che utilizza RSA per la trasmissione di username e password criptati. In particolare questo il procedimento a cui ho pensato.
    1. Utilizzare la libreria PHP dal nome PHPseclib per generare la coppia di chiavi pubblica e privata;
    2. Inserire in un cookie la chiave pubblica;
    3. Utilizzare la libreria Javascript dal nome jsencrypt per crittare i campi username e password prima dell'invio del form con la chiave pubblica (naturalmente) salvata nel cookie.
    4. Una volta ricevuti, decriptare i campi con PHP.


    Un po' di codice a corredo:
    Codice PHP:
    require_once('Crypt/RSA.php');$rsa = new Crypt_RSA();$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS1);$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS1);extract($rsa->createKey());setcookie("publickey"$publickeytime()+3600); 
    Incontro (penso) a questo punto il primo problema:
    mentre la variabile $publickey ha una struttura del tipo:
    codice:
    -----BEGIN RSA PUBLIC KEY-----MIGJAoGBALSQ137ciOJlO32j7bWHpuLFtgaE19tbU6J3Xs8WA+qYsDNkKxEnDqQR
    mNh6cbt6fpSdRuHCYcyv9VtO854glmQANTxm98tPOaYzEEty5efIVVHM18PNzhkT
    lOwXicB3mZgtxfjNcRYuAfTyc8AVDuzcs/3dm9dSHK0enovPAtytAgMBAAE=
    -----END RSA PUBLIC KEY-----
    quella prelevata con javascript è del tipo:
    codice:
    -----BEGIN+RSA+PUBLIC+KEY-----%0D%0AMIGJAoGBALSQ137ciOJlO32j7bWHpuLFtgaE19tbU6J3Xs8WA%2BqYsDNkKxEnDqQR%0D%0AmNh6cbt6fpSdRuHCYcyv9VtO854glmQANTxm98tPOaYzEEty5efIVVHM18PNzhkT%0D%0AlOwXicB3mZgtxfjNcRYuAfTyc8AVDuzcs%2F3dm9dSHK0enovPAtytAgMBAAE%3D%0D%0A-----END+RSA+PUBLIC+KEY-----
    Naturalmente trovo il primo problema poichè la funzione della libreria javascript non critta il messaggio (forse trovando irregolare la chiave).
    codice:
              var encrypt = new JSEncrypt();
    	  var publickey = leggiCookie('publickey');
              encrypt.setPublicKey(publickey);
              var encrypted = encrypt.encrypt($('#input').val());
              document.example.crittato.value = encrypted;
    Nel campo "crittato" del form "example" mi compare la dicitura false.
    Chiedo a voi del forum se questa tecnica potrebbe essere utile allo sniffing dei dati essendo questi decifrabili solo con la chiave segreta custodita sul server.
    Inoltre: come mai nel cookie la chiave è salvata in modo diverso (+ che sostituiscono spazi e %che compaiono)?

    Come sempre grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ciao, se vuoi una connessione sicura tra client e server utilizza il protocollo https, quello che stai facendo penso sia inutile se non per scopo didattico. Per rimuovere quei caratteri(%+ ecc...) devi effettuare l'url decoding, alcuni link utili

    https://it.wikipedia.org/wiki/HTTPS
    https://en.wikipedia.org/wiki/Percent-encoding
    http://www.url-encode-decode.com/

  3. #3
    Quote Originariamente inviata da Vindav Visualizza il messaggio
    Ciao, se vuoi una connessione sicura tra client e server utilizza il protocollo https, quello che stai facendo penso sia inutile se non per scopo didattico. Per rimuovere quei caratteri(%+ ecc...) devi effettuare l'url decoding, alcuni link utili

    https://it.wikipedia.org/wiki/HTTPS
    https://en.wikipedia.org/wiki/Percent-encoding
    http://www.url-encode-decode.com/
    Ovvio che l'utilizzo del protocollo https è indicato (altrimenti non avrebbe ragion d'esistere).
    Come mai reputarla addirittura inutile come cosa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.