See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 18182|Vastuse: 0

[Allikas] C# rakendab RSA krüpteerimist ja dekrüpteerimist üksikasjalikult

[Kopeeri link]
Postitatud 04.11.2015 12:37:23 | | |
Projekti nõue: genereerida privaatvõti ja avalik võti, krüpteerida avaliku võtmega, dekrüpteerida privaatvõtmega, ma rakendasin selle nii,



Loodan aidata sõpru, kellel on see vajadus.







Lähtekood on järgmine:



1. Genereeri paar võtmeid:



          /// <summary>
        Genereeri privaatvõti ja avaliku võtme arr[0] privaatvõtme arr[1] jaoks avaliku võtme jaoks
        /// </summary>
        /// <returns></returns>
        avalik staatiline string[] GenerateKeys()
        {
            string[] sKeys = uus string[2];
            RSACryptoServiceProvider rsa = uus RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(true);
            sKeys[1] = rsa. ToXmlString (vale);
            return sKeys;
        }



2. Krüpteerimine:



      /// <summary>
        /// RSA Encrypt
        /// </summary>
       <param name="sSource" >Source string</param>
        <param name="sPublicKey" >avalik võti</param>
        /// <returns></returns>
        avalik staatiline string EncryptString(string sSource, string sPublicKey)
        {
            RSACryptoServiceProvider rsa = uus RSACryptoServiceProvider();
            string plaintext = sSource;
            RSA. FromXmlString(sAvalik Võti);
            bait[] šifribaidid;
            bait[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            Cipherbytes = rsa. Encrypt(Encoding.UTF8.GetBytes(selge tekst), vale);



            StringBuilder sbString = uus StringBuilder();
            for (int i = 0; Ma < šifribaite. Pikkus; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Dekrüpteerimine:



  /// <summary>
        RSA dekrüpteerimine
        /// </summary>
        <param name="sSource">Source string</param>
        <param name="sPrivateKey">Privaatvõti</param>
        /// <returns></returns>
        avalik staatiline string DecryptString (string sSource, string sPrivateKey)
        {
            RSACryptoServiceProvider rsa = uus RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            bait[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            string[] sBytes = sSource.Split(',');



            for (int j = 0; j < sBytes.Pikkus; j++)
            {
                if (sBytes[j] != "")
                {
                    byteEn[j] = Bait.Parse(sBytes[j]);
                }
            }
            bait[] plaintbytes = rsa. Decrypt(byteEn, false);
            return Encoding.UTF8.GetString(plaintbytes);
        }
            return sbString.ToString();
        }





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

RSA krüpteerimise ja dekrüpteerimise lähtekood:

kasutades süsteemi;
kasutades System.Collections.Generic;
kasutades System.Linq'i;
kasutades System.Texti;
kasutades System.Security.Cryptography;

nimeruum MyRSA
nimeruum 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 (string base64code)

{

    proovi

    {



        Loo UnicodeEncoder, et teisendada baitmassiivi ja stringi vahel.

        UnicodeEncoding ByteConverter =uus UnicodeEncoding();



        Loo uus RSACryptoServiceProvider instant, et genereerida

        avaliku ja privaatvõtme andmed.

        RSACryptoServiceProvider RSA =uus RSACryptoServiceProvider();

        RSA. FromXmlString (privaatvõti);



        byte[] encryptedData;

        byte[] decryptedData;

        encryptedData = Convert.FromBase64String(base64code);



        Edasta andmed DECRYPT-ile, privaatvõtme infole

        (kasutades RSACryptoServiceProvider.ExportParameters(true),

        ja boole'i lipp, mis ei sisalda OAEP pehmendust.

        decryptedData = RSADecrypt(

            encryptedData, RSA. ExportParameters(tõene), väär);



        Kuva dekrüpteeritud selgetekst konsoolile.

        tagasta ByteConverter.GetString(decryptedData);

    }

    catch (erandi exc)

    {

        Exceptions.LogException(exc);

        Console.WriteLine(v.c. Sõnum);

        tagasi"";

    }

}



staticpublicstring Encrypt(string toEncryptString)

{

    proovi

    {

        Loo UnicodeEncoder, et teisendada baitmassiivi ja stringi vahel.

        UnicodeEncoding ByteConverter =uus UnicodeEncoding();



        Loo baitmassiivid, mis hoiavad originaalse, krüpteeritud ja dekrüpteeritud andmeid.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        byte[] encryptedData;

        byte[] decryptedData;



        Loo uus RSACryptoServiceProvider instant, et genereerida

        avaliku ja privaatvõtme andmed.

        RSACryptoServiceProvider RSA =uus RSACryptoServiceProvider();



        RSA. FromXmlString (privaatvõti);



        Edasta andmed ENCRYPTile, avaliku võtme infole

        (kasutades RSACryptoServiceProvider.ExportParameters(vale),

        ja boole'i lipp, mis ei sisalda OAEP pehmendust.

        encryptedData = RSAEncrypt(

            dataToEncrypt, RSA. ExportParameters (vale, vale);



        string base64code = Convert.ToBase64String(encryptedData);

        tagasta base64code;

    }

    catch (erandi exc)

    {

        Võta see erand kinni juhuks, kui krüpteerimine seda tegi.

        ei õnnestunud.

        Exceptions.LogException(exc);

        Console.WriteLine(v.c. Sõnum);

        tagasi"";

    }







}



staticprivatebyte[] RSAEncrypt(

    bait[] DataToEncrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    proovi

    {

        Loo uus RSACryptoServiceProvider instants.

        RSACryptoServiceProvider RSA =uus RSACryptoServiceProvider();



        Impordi RSA võtme info. Selleks on vaja vaid

        et lisada avaliku võtme info.

        RSA. ImportParameters(RSAKeyInfo);



        Krüpteeri läbitud baitide massiivi ja määra OAEP padding.  

        OAEP polsterdus on saadaval ainult Microsoft Windows XP-l või

        Hiljem.  

        tagasta RSA. Krüpteerimine (DataToEncrypt, DoOAEPPadding);

    }

    Tuvasta ja kuva krüptograafiline erand  

    konsoolile.

    catch (CryptographicException e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    bait[] DataToDecrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    proovi

    {

        Loo uus RSACryptoServiceProvider instants.

        RSACryptoServiceProvider RSA =uus RSACryptoServiceProvider();



        Impordi RSA võtme info. See vajab

        et lisada privaatvõtme info.

        RSA. ImportParameters(RSAKeyInfo);



        Dekrüpteeri läbitud baitide massiivi ja määra OAEP padding.  

        OAEP polsterdus on saadaval ainult Microsoft Windows XP-l või

        Hiljem.  

        tagasta RSA. Decrypt (DataToDecrypt, DoOAEPPadding);

    }

    Tuvasta ja kuva krüptograafiline erand  

    konsoolile.

    catch (CryptographicException 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.         }
Kopeeri kood






Eelmine:Loo oma isiklik foorum tasuta, saad teenida raha enda nimel ehitades ja saad seda teha kolme minutiga
Järgmine:Onclick ja href kasutamine HTML-i A-sildis
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com