Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 18182|Vastaus: 0

[Lähde] C# toteuttaa RSA-salauksen ja purkamisen yksityiskohtaisesti

[Kopioi linkki]
Julkaistu 4.11.2015 12.37.23 | | |
Projektin vaatimukset: luoda yksityinen ja julkinen avain, salata julkisella avaimella, purkaa salaus yksityisellä avaimella, toteutin sen näin,



Toivon voivani auttaa ystäviä, joilla on tämä tarve.







Lähdekoodi on seuraava:



1. Luo pari avainta:



          /// <summary>
        luo yksityinen avain ja julkinen avain arr[0] yksityisavaimelle arr[1] julkiselle avaimelle
        /// </summary>
        /// <returns></returns>
        julkinen staattinen merkkijono[] GenerateKeys()
        {
            string[] sKeys = uusi String[2];
            RSACryptoServiceProvider rsa = uusi RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(totta);
            sKeys[1] = rsa. ToXmlString (väärin);
            return sKeys;
        }



2. Salaus:



      /// <summary>
        RSA-salaus
        /// </summary>
       <param name="sSource" >Lähdemerkkijono</param>
        <param name="sPublicKey" >julkinen avain</param>
        /// <returns></returns>
        julkinen staattinen merkkijono EncryptString(merkkijono sSource, merkkijono sPublicKey)
        {
            RSACryptoServiceProvider rsa = uusi RSACryptoServiceProvider();
            string plaintext = sSource;
            RSA. FromXmlString(sPublicKey);
            tavu[] salatavut;
            tavu[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), väärin);
            Cipherbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(selvä teksti), väärin);



            StringBuilder sbString = uusi StringBuilder();
            kun (int i = 0; Minulla < salatavuja. Pituus; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Salauksen purku:



  /// <summary>
        RSA:n salauksen purku
        /// </summary>
        <param name="sSource">Lähdemerkkijono</param>
        <param name="sPrivateKey">Yksityisavain</param>
        /// <returns></returns>
        julkinen staattinen merkkijono DecryptString (merkkijono sSource, merkkijono sPrivateKey)
        {
            RSACryptoServiceProvider rsa = uusi RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            tavu[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), väärin);
            string[] sBytes = sSource.Split(',');



            kun (int j = 0; j < sTavut.Pituus; j++)
            {
                if (sBytes[j] != "")
                {
                    byteEn[j] = Byte.Parse(sBytes[j]);
                }
            }
            tavu[] plaintbytes = rsa. Decrypt(byteEn, false);
            return Encoding.UTF8.GetString(plaintbytes);
        }
            return sbString.ToString();
        }





--------------------------------------------------------------------

RSA-salaus ja purku lähdekoodi:

käyttämällä Systemiä;
käyttäen System.Collections.Generic-tiedostoa;
käyttäen System.Linqia;
käyttäen System.Textiä;
käyttäen System.Security.Cryptographya;

nimiavaruus MyRSA
nimiavaruus MyRSA

{

publicclass MyRSA

{



privatestaticstring publicKey =

    "<RSAKeyValue><Modulus>6CdsXgYOyya/yQH"+

    "TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L"+

    "wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx"+

    "PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE"+

    "/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP"+

    "w9YRXiac=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

privatestaticstring privateKey =

    "<RSAKeyValue><Modulus>6CdsXgYOyya/yQH"+

    "TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L"+

    "wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx"+

    "PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE"+

    "/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP"+

    "w9YRXiac=</Modulus><Exponent>AQAB</Exponent>"+

    "<P>/aoce2r6tonjzt1IQI6FM4ysR40j/gKvt4d"+

    "L411pUop1Zg61KvCm990M4uN6K8R/DUvAQdrRd"+

    "VgzvvAxXD7ESw==</P><Q>6kqclrEunX/fmOle"+

    "VTxG4oEpXY4IJumXkLpylNR3vhlXf6ZF9obEpG"+

    "lq0N7sX2HBxa7T2a0WznOAb0si8FuelQ==</Q>"+

    "<DP>3XEvxB40GD5v/Rr4BENmzQW1MBFqpki6FU"+

    "GrYiUd2My+iAW26nGDkUYMBdYHxUWYlIbYo6Te"+

    "zc3d/oW40YqJ2Q==</DP><DQ>LK0XmQCmY/ArY"+

    "gw2Kci5t51rluRrl4f5l+aFzO2K+9v3PGcndjA"+

    "StUtIzBWGO1X3zktdKGgCLlIGDrLkMbM21Q==</DQ><InverseQ>"+

    "GqC4Wwsk2fdvJ9dmgYlej8mTDBWg0Wm6aqb5kjn"+

    "cWK6WUa6CfD+XxfewIIq26+4Etm2A8IAtRdwPl4"+

    "aPjSfWdA==</InverseQ><D>a1qfsDMY8DSxB2D"+

    "Cr7LX5rZHaZaqDXdO3GC01z8dHjI4dDVwOS5ZFZ"+

    "s7MCN3yViPsoRLccnVWcLzOkSQF4lgKfTq3IH40"+

    "H5N4gg41as9GbD0g9FC3n5IT4VlVxn9ZdW+WQry"+

    "oHdbiIAiNpFKxL/DIEERur4sE1Jt9VdZsH24CJE=</D></RSAKeyValue>";



staticpublicstring Decrypt (merkkijono base64code)

{

    yritä

    {



        Luo UnicodeEncoder muuntamaan tavutaulukon ja merkkijonon välillä.

        UnicodeEncoding ByteConverter = uusi UnicodeEncoding();



        Luo uusi RSACryptoServiceProvider-instanssi luodaksesi

        julkisen ja yksityisen avaimen tiedot.

        RSACryptoServiceProvider RSA = uusi RSACryptoServiceProvider();

        RSA. FromXmlString (yksityisavain);



        byte[] encryptedData;

        byte[] decryptedData;

        encryptedData = Muunnata.FromBase64String(base64code);



        Välitä tiedot DECRYPTille, yksityisen avaimen tiedoille

        (käyttäen RSACryptoServiceProvider.ExportParameters(true),

        ja boolean-lippu, jossa ei ole OAEP-pehmustetta.

        decryptedData = RSADecrypt(

            encryptedData, RSA. ExportParameters(tosi), epätosi);



        Näytä purettu selvä teksti konsolille.

        return ByteConverter.GetString(decryptedData);

    }

    catch (poikkeus-exc)

    {

        Exceptions.LogException(exc);

        Console.WriteLine (esim. Viesti);

        paluu"";

    }

}



staticpublicstring Encrypt(string toEncryptString)

{

    yritä

    {

        Luo UnicodeEncoder muuntamaan tavutaulukon ja merkkijonon välillä.

        UnicodeEncoding ByteConverter = uusi UnicodeEncoding();



        Luo tavutaulukoita, jotka sisältävät alkuperäistä, salattua ja purettua dataa.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        byte[] encryptedData;

        byte[] decryptedData;



        Luo uusi RSACryptoServiceProvider-instanssi luodaksesi

        julkisen ja yksityisen avaimen tiedot.

        RSACryptoServiceProvider RSA = uusi RSACryptoServiceProvider();



        RSA. FromXmlString (yksityisavain);



        Välitä tiedot ENCRYPTille, julkisen avaimen tietoon

        (käyttäen RSACryptoServiceProvider.ExportParameters(false),

        ja boolean-lippu, jossa ei ole OAEP-pehmustetta.

        encryptedData = RSAEncrypt(

            dataToEncrypt, RSA. ExportParameters(väärin, väärin);



        merkkijono base64code = Muunna. ToBase64String(encryptedData);

        palauta base64code;

    }

    catch (poikkeus-exc)

    {

        Ota tämä poikkeus kiinni, jos salaus teki niin

        ei onnistunut.

        Exceptions.LogException(exc);

        Console.WriteLine (esim. Viesti);

        paluu"";

    }







}



staticprivatebyte[] RSAEncrypt(

    tavu[] DataToEncrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    yritä

    {

        Luo uusi RSACryptoServiceProvider-instanssi.

        RSACryptoServiceProvider RSA = uusi RSACryptoServiceProvider();



        Tuo RSA-avaimen tiedot. Tämä tarvitsee vain

        sisällyttää julkisen avaimen tiedot.

        RSA. ImportParameters(RSAKeyInfo);



        Salaa ohitettu tavutaulukko ja määritä OAEP-täyte.  

        OAEP-pehmuste on saatavilla vain Microsoft Windows XP:ssä tai

        myöhemmin.  

        palauta RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    Tunnista ja näytä CryptographicException  

    konsolille.

    catch (KryptographicException e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    byte[] DataToDecrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    yritä

    {

        Luo uusi RSACryptoServiceProvider-instanssi.

        RSACryptoServiceProvider RSA = uusi RSACryptoServiceProvider();



        Tuo RSA-avaimen tiedot. Tämä vaatii

        Sisällyttää yksityisen avaimen tiedot.

        RSA. ImportParameters(RSAKeyInfo);



        Pura läpikulkenut tavutaulukko ja määritä OAEP-täyte.  

        OAEP-pehmuste on saatavilla vain Microsoft Windows XP:ssä tai

        myöhemmin.  

        palauta RSA. Decrypt(DataToDecrypt, DoOAEPPadding);

    }

    Tunnista ja näytä CryptographicException  

    konsolille.

    catch (KryptographicException e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }

}

}

}

  1. static void Main(string[] args)
  2.         {
  3.             string encodeString = MyRSA.Encrypt("1234567");
  4.             Console.WriteLine(encodeString);


  5.             string decode = MyRSA.Decrypt(encodeString);
  6.             Console.WriteLine(decode);

  7.             Console.ReadLine();
  8.         }
Kopioi koodi






Edellinen:Rakenna oma henkilökohtainen foorumisi ilmaiseksi, voit ansaita rahaa rakentamalla puolestasi, ja voit tehdä sen kolmessa minuutissa
Seuraava:Onclickin ja hrefin käyttö A-tagissa HTML:ssä
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com