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

    [C#] Chiave di criptazione asincrone

    Salve a tutti,

    spero qualcuno mi possa aiutare. Io ho bisogno di creare un file criptato tramite una chiave privata e leggibile tramite una chiave pubblica. Mi spiego meglio, non ho bisogno di proteggere in lettura ma in scrittura perché così sono l'unico a poter criptare il file mentre gli utenti possono solo leggerlo. Ora, ho provato il sistema RSA, però ho notato questo, io devo criptare con la chiave pubblica fornitami dall'algoritmo mentre devo fornire sia la privata che quella pubblica per poterlo far decriptare all'utente.. Quindi esattamente il contrario di quello che ho bisogno... Qualcuno sa come fare? Spero di essere stato chiaro.

    Grazie anticipatamente a chi sa darmi una mano,

    Fabio.

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    C# centra poco qui.
    Leggi prima qui per capire meglio come funziona la crittografia assimetrica.
    I got the remedy

  3. #3
    Grazie per la risposta, albgen,

    questo articolo l'ho letto, però sono rimasto perplesso in questo punto

    codice:
    public static void GetKeys(ref string PublicKey, ref string PrivateKey)
            {
                RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(2048);
                PrivateKey = RSAProvider.ToXmlString(true);
                PublicKey = RSAProvider.ToXmlString(false);
            }
    
            public static string Encode(string inputString, int dwKeySize,
                                     string xmlString)
            {
               
                RSACryptoServiceProvider rsaCryptoServiceProvider =
                                              new RSACryptoServiceProvider(dwKeySize);
                rsaCryptoServiceProvider.FromXmlString(xmlString);
                int keySize = dwKeySize / 8;
                byte[] bytes = Encoding.Unicode.GetBytes(inputString);
                byte[] EncryptMessage = rsaCryptoServiceProvider.Encrypt(bytes, true);            
                return Convert.ToBase64String(EncryptMessage);
    
            }
    
    
            public static string Decode(string inputString, int dwKeySize,
                                  string xmlString)
            {
               
                RSACryptoServiceProvider rsaCryptoServiceProvider
                                         = new RSACryptoServiceProvider(dwKeySize);
                rsaCryptoServiceProvider.FromXmlString(xmlString);            
                byte[] CryptedMessage = Convert.FromBase64String(inputString);
                byte[] DecryptedMessage = rsaCryptoServiceProvider.Decrypt(CryptedMessage, true);
               
                return Encoding.Unicode.GetString(DecryptedMessage);
            }
    il metodo getkeys mi permette di ricevere le chiavi ma per criptare ho bisogno di quella pubblica mentre devo distribuire quella privata che... come stringa, contiene anche quella pubblica! Quindi l'utente può crearsi il suo file. Ho provato a sostituirla o ad elminarla ma il metodo di decodifica va in errore.

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    scusa, ma non ho capito niente di quello che hai scritto. Dove stà la difficoltà?
    Ti conviene rileggere l'articolo perchè mi sembra che non hai ancora le idee tanto chiare di come funzionano le chiave private/pubbliche e sopratutto quanti sono e come vengono utilizzate.
    I got the remedy

  5. #5
    effettivamente mi sfugge qualcosa... sicuramente.. ehehehe... ma non so cosa!!!

    non mi è chiaro un passaggio, magari tu sai spiegarmelo

    io ho una chiave pubblica ed una privata.

    se cripto con la chiave pubblica.. posso solo decriptare con quella privata.. E' giusto? o per decriptare ho bisogno di entrambe le chiavi?...
    Voglio capire solo questo, perché il codice che ho postato cripta con quella pubblica e decripta con una stringa contentente sia quella pubblica che quella privata. La stringa della chiave privata me la genera PrivateKey = RSAProvider.ToXmlString(true); Il fatto è che sono obbligato a consegnarla tutta al programma che decripta, se provo ad eliminare dalla stringa la chiave pubblica con cui ho criptato la procedura di decodifica non funziona, mi restiusce un errore di chaive errata.

    grazie ancora per la tua pazienza

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    va beh ci provo con poche righe.
    Con la crittografia assimetrica ci sono 2 entità che si scambiano l'informazione criptata.
    Ogni entita ha 2 chiavi, una pubblica e una privata. Quella pubblica si distribuisce a tutti invece quella privata è segreta. Quando una delle entità vuole criptare un informazione utilizza la sua chiave privata e la chiave publica dell'altra entità a cui vuole inviare questa informazione criptata.
    L'entità che riceve l'informazione criptata utilizza la sua chiave privata e quella pubblica dell'altra entità per decriptare l'informazione.
    I got the remedy

  7. #7
    sei stato molto chiaro... ora metto in atto quello che mi hai detto e poi posto la soluzione.

    Spero di aver capito.

    Per ora ti ringrazio, sei stato gentilissimo.

    Buona giornata,

    Fabio.

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.