Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 18182|Odpoveď: 0

[Zdroj] C# podrobne implementuje šifrovanie a dešifrovanie RSA

[Kopírovať odkaz]
Zverejnené 4. 11. 2015 12:37:23 | | |
Požiadavky projektu: generovať súkromný kľúč a verejný kľúč, šifrovať verejným kľúčom, dešifrovať súkromným kľúčom, implementoval som to takto,



Dúfam, že budem užitočný priateľom, ktorí majú túto potrebu.







Zdrojový kód je nasledovný:



1. Vygenerujte dvojicu kľúčov:



          /// <summary>
        Generujte súkromný kľúč a verejný kľúč ARR[0] pre súkromný kľúč[1] pre verejný kľúč[1]
        /// </summary>
        /// <returns></returns>
        public static string[] GenerateKeys()
        {
            string[] sKeys = nový String[2];
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(true);
            sKeys[1] = rsa. ToXmlString(false);
            return sKeys;
        }



2. Šifrovanie:



      /// <summary>
        /// RSA Encrypt
        /// </summary>
       <názov parametra="sSource" >Zdrojový reťazec</param>
        <názov parametra="sPublicKey" >verejný kľúč</param>
        /// <returns></returns>
        public static string EncryptString(string sSource, string sPublicKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            reťazec otvorený text = sSource;
            RSA. FromXmlString(sPublicKey);
            bajty[] cipherbytes;
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            Cipherbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(otvorený text), false);



            StringBuilder sbString = nový StringBuilder();
            pre (int i = 0; Ja < šifrové bajty. Dĺžka; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Dešifrovanie:



  /// <summary>
        /// RSA Decrypt
        /// </summary>
        <názov parametra="sSource">Zdrojový reťazec</param>
        <názov parametra="sPrivateKey">Private Key</param>
        /// <returns></returns>
        public static string DecryptString(String sSource, string sPrivateKey)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            string[] sBytes = sSource.Split(',');



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





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

Zdrojový kód šifrovania a dešifrovania RSA:

pomocou systému;
používajúc System.Collections.Generic;
pomocou System.Linq;
pomocou System.Text;
pomocou System.Security.Cryptography;

menný priestor MyRSA
menný priestor 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)

{

    Skús

    {



        Vytvorte UnicodeEncoder na prevod medzi bajtovým poľom a reťazcom.

        UnicodeEncoding ByteConverter = nový UnicodeEncoding();



        Vytvorte novú inštanciu RSACryptoServiceProvider na generovanie

        Verejné a súkromné kľúčové dáta.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();

        RSA. FromXmlString(privateKey);



        byte[] encryptedData;

        byte[] decryptedData;

        encryptedData = Convert.FromBase64String(base64code);



        Odovzdajte dáta na DECRYPT, informácie o súkromnom kľúči

        (pomocou RSACryptoServiceProvider.ExportParameters(true),

        a booleovská vlajka bez OAEP výplne.

        decryptedData = RSADecrypt(

            encryptedData, RSA. ExportParameters(true), false);



        Zobraziť dešifrovaný otvorený text konzole.

        return ByteConverter.GetString(decryptedData);

    }

    catch (Výnimka exc)

    {

        Exceptions.LogException(exc);

        Console.WriteLine(napr. Message);

        návrat"";

    }

}



staticpublicstring Encrypt(string toEncryptString)

{

    Skús

    {

        Vytvorte UnicodeEncoder na prevod medzi bajtovým poľom a reťazcom.

        UnicodeEncoding ByteConverter = nový UnicodeEncoding();



        Vytvárajte bajtové polia na uchovávanie originálnych, šifrovaných a dešifrovaných dát.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        byte[] encryptedData;

        byte[] decryptedData;



        Vytvorte novú inštanciu RSACryptoServiceProvider na generovanie

        Verejné a súkromné kľúčové dáta.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



        RSA. FromXmlString(privateKey);



        Odovzdajte dáta do ENCRYPT, verejnej kľúčovej informácie

        (použitím RSACryptoServiceProvider.ExportParameters(false),

        a booleovská vlajka bez OAEP výplne.

        encryptedData = RSAEncrypt(

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



        string base64code = Convert.ToBase64String(encryptedData);

        vrátiť base64code;

    }

    catch (Výnimka exc)

    {

        Chyťte túto výnimku, ak šifrovanie áno

        Neuspel.

        Exceptions.LogException(exc);

        Console.WriteLine(napr. Message);

        návrat"";

    }







}



staticprivatebyte[] RSAEncrypt(

    byte[] DataToEncrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    Skús

    {

        Vytvorte novú inštanciu RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



        Importujte informácie o RSA kľúči. Stačí to

        na zahrnutie informácií o verejnom kľúči.

        RSA. ImportParameters(RSAKeyInfo);



        Zašifrujte pole odovzdaných bajtov a špecifikujte OAEP vyplňovanie.  

        OAEP vyplňovanie je dostupné iba na Microsoft Windows XP alebo

        neskôr.  

        vráťte RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    Zachytiť a zobraziť CryptographicException  

    ku konzole.

    catch (CryptographicException e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    byte[] DataToDecrypt,

    RSAParameters RSAKeyInfo,

    bool DoOAEPPadding)

{

    Skús

    {

        Vytvorte novú inštanciu RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



        Importujte informácie o RSA kľúči. Tieto potreby

        Na zahrnutie informácií o súkromnom kľúči.

        RSA. ImportParameters(RSAKeyInfo);



        Dešifrovať pole odovzdaných bajtov a špecifikovať OAEP vyplňovanie.  

        OAEP vyplňovanie je dostupné iba na Microsoft Windows XP alebo

        neskôr.  

        vráťte RSA. Decrypt(DataToDecrypt, DoOAEPPadding);

    }

    Zachytiť a zobraziť CryptographicException  

    ku konzole.

    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.         }
Kopírovať kód






Predchádzajúci:Vytvorte si vlastné osobné fórum zadarmo, môžete zarobiť peniaze tým, že budete budovať vo svoj prospech, a zvládnete to za tri minúty
Budúci:Použitie onclick a href v tagu A v HTML
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com