Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 18182|Svare: 0

[Kilde] C# implementerer RSA-kryptering og dekryptering i detalj

[Kopier lenke]
Publisert på 04.11.2015 12:37:23 | | |
Prosjektets krav: generere en privat nøkkel og offentlig nøkkel, kryptere med offentlig nøkkel, dekryptere med privat nøkkel, jeg implementerte det slik,



Jeg håper å kunne hjelpe venner som har dette behovet.







Kildekoden er som følger:



1. Generer et par nøkler:



          /// <summary>
        Generer privat nøkkel og offentlig nøkkel ARR[0] for privat nøkkel ARR[1] for offentlig nøkkel
        /// </summary>
        /// <returns></returns>
        offentlig statisk streng[] GenerateKeys()
        {
            string[] sKeys = ny streng[2];
            RSACryptoServiceProvider rsa = ny RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString (true);
            sKeys[1] = rsa. ToXmlString (falsk);
            returner sKeys;
        }



2. Kryptering:



      /// <summary>
        RSA-kryptering
        /// </summary>
       <param name="sSource" >Source-streng</param>
        <param name="sPublicKey" >offentlig nøkkel</param>
        /// <returns></returns>
        offentlig statisk streng EncryptString(streng sSource,streng sPublicKey)
        {
            RSACryptoServiceProvider rsa = ny RSACryptoServiceProvider();
            streng klartekst = sKilde;
            RSA. FromXmlString (sPublicKey);
            byte[] chifferbyter;
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), falsk);
            Chifferbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(klartekst), falsk);



            StringBuilder sbString = ny StringBuilder();
            for (int i = 0; Jeg < Cipherbytes. Lengde; i++)
            {
                sbString.Append(cipherbytes)+ ",");
            }



3. Dekryptering:



  /// <summary>
        RSA-dekryptering
        /// </summary>
        <param name="sSource">Source-streng</param>
        <param name="sPrivateKey">Private Key</param>
        /// <returns></returns>
        offentlig statisk streng DecryptString (String sSource, string sPrivateKey)
        {
            RSACryptoServiceProvider rsa = ny RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), falsk);
            string[] sBytes = sSource.Split(',');



            for (int j = 0; j < sBytes.Lengde; j++)
            {
                hvis (sBytes[j] != "")
                {
                    byteEn[j] = Byte.Parse(sBytes[j]);
                }
            }
            byte[] plaintbytes = rsa. Dekryptering(byteEn, falsk);
            return Encoding.UTF8.GetString(plaintbytes);
        }
            return sbString.ToString();
        }





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

RSA-kryptering og dekrypteringskildekode:

ved bruk av System;
ved bruk av System.Collections.Generic;
ved bruk av System.Linq;
ved bruk av System.Text;
bruk av System.Security.Cryptography;

navnerom MyRSA
navnerom 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 Dekryptering (streng base64code)

{

    Prøv

    {



        Lag en UnicodeEncoder for å konvertere mellom byte-array og streng.

        UnicodeEncoding ByteConverter =new UnicodeEncoding();



        Opprett en ny instans av RSACryptoServiceProvider for å generere

        offentlige og private nøkkeldata.

        RSACryptoServiceProvider RSA =ny RSACryptoServiceProvider();

        RSA. FromXmlString (privatnøkkel);



        byte[] kryptertData;

        byte[] dekrypterte Data;

        encryptedData = Convert.FromBase64String (base64code);



        Send dataene til DECRYPT, den private nøkkelinformasjonen

        (ved bruk av RSACryptoServiceProvider.ExportParameters(true),

        og et boolsk flagg som spesifiserer ingen OAEP-polstring.

        decryptedData = RSADecrypt(

            krypterte data, RSA. ExportParameters(true), false);



        Vis den dekrypterte klarteksten til konsollen.

        return ByteConverter.GetString(decryptedData);

    }

    catch (Unntak osv.)

    {

        Unntak. LogException(exc);

        Console.WriteLine (osv. Melding);

        return";

    }

}



staticpublicstring Encrypt(string toEncryptString)

{

    Prøv

    {

        Lag en UnicodeEncoder for å konvertere mellom byte-array og streng.

        UnicodeEncoding ByteConverter =new UnicodeEncoding();



        Lag bytearrays for å holde originale, krypterte og dekrypterte data.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        byte[] kryptertData;

        byte[] dekrypterte Data;



        Opprett en ny instans av RSACryptoServiceProvider for å generere

        offentlige og private nøkkeldata.

        RSACryptoServiceProvider RSA =ny RSACryptoServiceProvider();



        RSA. FromXmlString (privatnøkkel);



        Send dataene til ENCRYPT, den offentlige nøkkelinformasjonen

        (ved bruk av RSACryptoServiceProvider.ExportParameters(false),

        og et boolsk flagg som spesifiserer ingen OAEP-polstring.

        encryptedData = RSAEncrypt(

            dataToEncrypt, RSA. ExportParameters(falsk), falsk);



        streng base64code = Convert.ToBase64String(encryptedData);

        returner base64code;

    }

    catch (Unntak osv.)

    {

        Fang dette unntaket i tilfelle krypteringen gjorde det

        ikke lykkes.

        Unntak. LogException(exc);

        Console.WriteLine (osv. Melding);

        return";

    }







}



staticprivatebyte[] RSAEncrypt(

    byte[] DataToEncrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    Prøv

    {

        Opprett en ny instans av RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =ny RSACryptoServiceProvider();



        Importer RSA-nøkkelinformasjonen. Dette trenger bare

        for å inkludere informasjonen om offentlig nøkkel.

        RSA. ImportParameters(RSAKeyInfo);



        Krypter det passerte byte-arrayet og spesifiser OAEP-utfylling.  

        OAEP-utfylling er kun tilgjengelig på Microsoft Windows XP eller

        Senere.  

        returner RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    Fang og vis et kryptografisk unntak  

    til konsollen.

    catch (CryptographicException e)

    {

        Unntak.LogUnntak(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    byte[] DataToDekryptering,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    Prøv

    {

        Opprett en ny instans av RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =ny RSACryptoServiceProvider();



        Importer RSA-nøkkelinformasjonen. Dette trenger

        for å inkludere informasjonen om private nøkkeler.

        RSA. ImportParameters(RSAKeyInfo);



        Dekrypter det passerte byte-arrayet og spesifiser OAEP-padding.  

        OAEP-utfylling er kun tilgjengelig på Microsoft Windows XP eller

        Senere.  

        returner RSA. Dekryptering(DataToDekryptering, DoOAEPPadding);

    }

    Fang og vis et kryptografisk unntak  

    til konsollen.

    catch (CryptographicException e)

    {

        Unntak.LogUnntak(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.         }
Kopier koden






Foregående:Bygg ditt eget personlige forum gratis, du kan tjene penger ved å bygge på dine vegne, og du kan gjøre det på tre minutter
Neste:Bruk av onclick og href i A-taggen i HTML
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com