Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157

    [JAVA] significato operazione shift right

    Salve a tutti!
    Altro quesito, stavolta meno tecnico. Volevo una conferma sulla comprensione di una riga di codice:

    codice:
      //DO MY STUFF HERE
      byte[] pass = //qualcosa che ho inizializzato in qualche modo 
      char[] param = //qualcosa che ho inizializzato in qualche modo, parametro metodo
      this.pass[indice1] = (byte)(param[indice2] >> '\b');
      //DO MY STUFF HERE
    dove indice1 e indice2 sono interi e indicano una determinata posizione dell'array.
    L'istruzione

    (param[indice2] >> '\b')

    equivale a fare uno shift a destra con segno di 8 posizioni, poi il cast è necessario per ovvia compatibilità di tipi.

    Mi interessa sapere se ho dato la giusta interpretazione alla riga in esame.
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] significato operazione shift right

    Originariamente inviato da valia
    (param[indice2] >> '\b')

    equivale a fare uno shift a destra con segno di 8 posizioni
    Si è un char con codice 8 (il "backspace"). Il valore viene comunque poi "promosso" a int (quindi appunto 8) per lo shift.


    P.S. è davvero "buffo" aver messo un carattere invece di 8!! (ma chi è che scrive 'ste cose ..... ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ehehe lo so, volevo capire che faceva.
    Allora è la SUN che ha fatto ste cose, ti dico anche classe
    KeyProtector.java, nel costruttore trovi una roba simile

    codice:
      private byte[] passwdBytes;
      private MessageDigest md;
    
     public KeyProtector(char[] paramArrayOfChar)
        throws NoSuchAlgorithmException
      {
        if (paramArrayOfChar == null) {
          throw new IllegalArgumentException("password can't be null");
        }
        this.md = MessageDigest.getInstance("SHA");
    
        this.passwdBytes = new byte[paramArrayOfChar.length * 2];
        int i = 0; for (int j = 0; i < paramArrayOfChar.length; ++i) {
          this.passwdBytes[(j++)] = (byte)(paramArrayOfChar[i] >> '\b');
          this.passwdBytes[(j++)] = (byte)paramArrayOfChar[i];
        }
      }
    appena vista mi sono messa paura, poi l'ho decifrata (e volevo conferma)

    Grazie mille :-)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da valia
    Allora è la SUN che ha fatto ste cose, ti dico anche classe
    KeyProtector.java, nel costruttore trovi una roba simile
    Se stai parlando di sun.security.provider.KeyProtector è assolutamente non-standard/non-ufficiale (insomma interno della Sun). Non è documentato nel javadoc del framework e non c'è nemmeno nel src.zip (il pacchetto dei sorgenti fornito con il JDK).

    L'ho trovato però online: http://www.docjar.com/html/api/sun/s...ctor.java.html

    Ma lì si vede (byte)(password[i] >> 8)

    Forse qualcuno ha voluto dare sfogo alla propria "vena" artistica ......
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    t'avessi chiamato prima avrei risparmiato un po' di tempo e fegato marcio!!!!
    La prox volta me ne ricorderò ihihih

    cmq si intendo appunto KeyProtector, la classe la vedo con eclipse (non posso modificarla, ma ne vedo il contenuto come una normale classe), sto facendo una sorta di reverse engineering (più che altro mi interessa sapere come è scritto il jks) visto che non ho trovato un wrapper C che implementa la criptoki in modo da creare jks da C.
    Qui in effetti qualcuno dato sfogo alla sua vena creativa (forse per confondere le idee a chi programma). Ho visto che questa parte non viene data coi sorgenti (sigh sob) per questo sono andata a finire sui .class

    Ora dò un'occhiata al link che mi hai dato, spero di trovarne qualcosa di utile (più che altro su come funziona)

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.