Visualizzazione risultati 1 fino 6 di 6

Discussione: [JS]Decode charCodeAt(i);

  1. #1
    Guest

    Predefinito [JS]Decode charCodeAt(i);

    Ciao !
    Ho provato a codificare una mia password con la funzione javascript
    Codice PHP:
    pass *= password.charCodeAt(i);
    Ora come posso fare a ricavarla? Cioè .. come posso decodificarla partendo dal valore di 2.493310153963928e+24 ?

    :D Grazie !!

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Puoi utilizzare il metodo fromCharCode.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Ho provato così :
    Codice PHP:
    <script type="text/javascript">

    document.write(String.fromCharCode(2.493310153963928e+24))

    </script>
    ma non va ç__ç

    Come posso fare :( ?

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se quella funzione è dentro un ciclo (magari invocata per ciascun carattere), purtroppo quella codifica è sbagliata... nel senso che non è una codifica perché non reversibile (per la nota probabilità commutativa della moltiplicazione, quel numero può essere associabile a qualsiasi anagramma della stringa di partenza, e se poi ci aggiungiamo gli errori di approssimazione...).

    Quello che potresti fare è quella che è chiamata codifica aritmetica: da una stringa ti permette di avere un numero compreso tra 0 e 1 e univocamente determinabile (però non puoi fare molto con gli errori di approssimazione)

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    uhm .... ho capito poco XD
    Quindi è irreversibile ?
    posto tutta la pagina ;)
    magari qualcuno riesce nella decodifica ^_^
    Codice PHP:
    <script type="text/javascript" language="JavaScript">
    <!--

    function
    submitentry(){
    password = document.password1.password2.value.toLowerCase()
    pass = 1
    for(i = 0; i < password.length; i++) {
    pass *= password.charCodeAt(i);
    }
    if(
    pass == 2.493310153963928e+24 || pass == 1.246655076981964e+26){
    window.location=password+".htm"}
    else{
    alert("Password non corretta")}
    }
    //-->
    </script>
    <form name="password1">
    <span class="Stile6">Inserisci password: </span>
    <input type="text" name="password2" size="15">
    <input type="button" value="Accedi" onClick="submitentry()">
    </form>
    ^_^

  6. #6
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Diciamo che quel tuo if riesce a verificare solamente se è stato inserito un anagramma di una password preimpostata. Poi, però, viene usata proprio la password come indirizzo web: in questo caso, la pagina o esiste o non esiste... se però non esiste di certo non viene visualizzato il messaggio "Password errata".

    La codifica aritmetica che ti dicevo è questa (in via teorica, perché con gli errori di approssimazione più lunga è la password più difficile è la riuscita della decodifica):
    Codice:
    var alphabet = new Array ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    
    function encode (word)
    {
       var interval = 1;
       var base_length = alphabet.length + 1;
       var code = 0;
       for (var i = 0; i < word.length; i++)
       {
          for (var j = 0; j < alphabet.length; j++)
             if (alphabet[j] == word.charAt(i))
             {
                code += (j + 1) * interval / base_length;
                break;
             }
          interval /= base_length;
       }
       return code;
    }
    
    function decode (number)
    {
       var interval = 1;
       var zero_code = 0;
       var base_length = alphabet.length + 1;
       var word = "";
       while (true)
       {
          var char_code = Math.floor ((number - zero_code) / interval * base_length);
          if (char_code == 0) break;
          word += alphabet[char_code - 1];
          zero_code += char_code * interval / base_length;
          interval /= base_length;
       }
       return word;
    }
    Se non mi sono incasinato a scrivere in codice l'algoritmo, dovrebbe essere giusto... naturalmente il tutto funziona solamente se la word iniziale contiene solo caratteri dell'alfabeto...

    Stammi bene...

    EDIT: ho migliorato un pochino il codice, le parole più lunghe continua a non beccarle ma almeno non va in loop infinito...
    Ultima modifica di dementialsite : 12-10-2007 alle ore 14.21.30
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •