Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 18182|Atsakyti: 0

[Šaltinis] C# išsamiai įgyvendina RSA šifravimą ir iššifravimą

[Kopijuoti nuorodą]
Paskelbta 2015-11-04 12:37:23 | | |
Projekto reikalavimai, sugeneruokite privatų ir viešąjį raktą, užšifruokite viešuoju raktu, iššifruokite privačiu raktu, aš jį įgyvendinau taip,



Tikiuosi, kad galėsiu padėti draugams, kuriems to reikia.







Šaltinio kodas yra toks:



1. Sugeneruokite raktų porą:



          /// <summary>
        Generuoti privatųjį raktą ir viešąjį raktą ARR[0] privačiam raktui ARR[1] viešajam raktui
        /// </summary>
        /// <returns></returns>
        viešoji statinė eilutė[] GenerateKeys()
        {
            string[] sKeys = nauja eilutė[2];
            RSACryptoServiceProvider rsa = naujas RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(teisinga);
            sKeys[1] = rsa. ToXmlString(klaidingas);
            grąžinti raktus;
        }



2. Šifravimas:



      /// <summary>
        RSA šifravimas
        /// </summary>
       <param name="sSource" >Šaltinio eilutė</param>
        <param name="sPublicKey" >viešasis raktas</param>
        /// <returns></returns>
        viešoji statinė eilutė EncryptString(eilutė sSource,eilutė sPublicKey)
        {
            RSACryptoServiceProvider rsa = naujas RSACryptoServiceProvider();
            eilutė paprastas tekstas = sŠaltinis;
            RSA. FromXmlString(sPublicKey);
            baitas[] cipherbytes;
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            cipherbytes = rsa. Encrypt(Encoding.UTF8.GetBytes(paprastas tekstas), klaidingas);



            StringBuilder sbString = naujas StringBuilder();
            for (int i = 0; Aš < cipherbytes. Ilgis; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Iššifravimas:



  /// <summary>
        RSA iššifravimas
        /// </summary>
        <param name="sSource">Source string</param>
        <param name="sPrivateKey">Privatus raktas</param>
        /// <returns></returns>
        viešoji statinė eilutė DecryptString(eilutė sSource, eilutė sPrivateKey)
        {
            RSACryptoServiceProvider rsa = naujas RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            string[] sBytes = sSource.Split(',');



            for (int j = 0; j < sBytes.Length; J++)
            {
                if (sBytes[j] != "")
                {
                    byteEn[j] = Byte.Parse(sBytes[j]);
                }
            }
            baitas[] plaintbytes = rsa. Decrypt(baitas, klaidingas);
            grąžinti Encoding.UTF8.GetString(plaintbytes);
        }
            grąžinti sbString.ToString();
        }





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

RSA šifravimo ir iššifravimo šaltinio kodas:

naudojantis Sistema;
naudojant System.Collections.Generic;
naudojant System.Linq;
naudojant System.Text;
naudojant System.Security.Cryptography;

vardų sritis MyRSA
vardų sritis MyRSA

{

viešoji klasė 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(eilutės base64code)

{

    Pabandykite

    {



        Sukurkite UnicodeEncoder, kad konvertuotumėte tarp baitų masyvo ir eilutės.

        UnicodeEncoding ByteConverter =naujas UnicodeEncoding();



        Sukurkite naują RSACryptoServiceProvider egzempliorių, kurį norite generuoti

        viešojo ir privačiojo rakto duomenis.

        RSACryptoServiceProvider RSA =naujas RSACryptoServiceProvider();

        RSA. FromXmlString(privatusRaktas);



        baitas[] užšifruoti duomenys;

        baitas[] decryptedData;

        encryptedData = Convert.FromBase64String(base64code);



        Perduokite duomenis DECRYPT, privataus rakto informaciją

        (naudojant RSACryptoServiceProvider.ExportParameters(true),

        ir Bulio logikos vėliavėlė, nurodanti OAEP užpildymą.

        decryptedData = RSADecrypt(

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



        Rodyti iššifruotą paprastą tekstą konsolėje.

        grąžinti ByteConverter.GetString(decryptedData);

    }

    laimikis (išimtis be išimties)

    {

        Exceptions.LogException(exc);

        Console.WriteLine(exc. pranešimas);

        grąžinti"";

    }

}



staticpublicstring Encrypt(eilutė įEncryptString)

{

    Pabandykite

    {

        Sukurkite UnicodeEncoder, kad konvertuotumėte tarp baitų masyvo ir eilutės.

        UnicodeEncoding ByteConverter =naujas UnicodeEncoding();



        Sukurkite baitų masyvus, kuriuose būtų laikomi originalūs, užšifruoti ir iššifruoti duomenys.

        baitas[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        baitas[] užšifruoti duomenys;

        baitas[] decryptedData;



        Sukurkite naują RSACryptoServiceProvider egzempliorių, kurį norite generuoti

        viešojo ir privačiojo rakto duomenis.

        RSACryptoServiceProvider RSA =naujas RSACryptoServiceProvider();



        RSA. FromXmlString(privatusRaktas);



        Perduokite duomenis į ENCRYPT, viešojo rakto informaciją

        (naudojant RSACryptoServiceProvider.ExportParameters(false),

        ir Bulio logikos vėliavėlė, nurodanti OAEP užpildymą.

        encryptedData = RSAEncrypt(

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



        eilutė base64code = Convert.ToBase64String(encryptedData);

        grąžinti base64kodą;

    }

    laimikis (išimtis be išimties)

    {

        Sugaukite šią išimtį, jei šifravimas padarė

        nepavyks.

        Exceptions.LogException(exc);

        Console.WriteLine(exc. pranešimas);

        grąžinti"";

    }







}



staticprivatebyte[] RSAEncrypt(

    baitas[] DataToEncrypt,

    RSAParametrai RSAKeyInfo,

    bool DoOAEPPadding)

{

    Pabandykite

    {

        Sukurkite naują RSACryptoServiceProvider egzempliorių.

        RSACryptoServiceProvider RSA =naujas RSACryptoServiceProvider();



        Importuokite RSA rakto informaciją. Tam reikia tik

        įtraukti viešojo rakto informaciją.

        RSA. ImportParameters(RSAKeyInfo);



        Užšifruokite perduotą baitų masyvą ir nurodykite OAEP užpildymą.  

        OAEP užpildymas galimas tik "Microsoft Windows XP" arba

        vėliau.  

        grąžinti RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    Kriptografinės išimties gaudymas ir rodymas  

    prie konsolės.

    catch (CryptographicException e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    baitas[] DataToDecrypt,

    RSAParametrai RSAKeyInfo,

    bool DoOAEPPadding)

{

    Pabandykite

    {

        Sukurkite naują RSACryptoServiceProvider egzempliorių.

        RSACryptoServiceProvider RSA =naujas RSACryptoServiceProvider();



        Importuokite RSA rakto informaciją. Tam reikia

        įtraukti privataus rakto informaciją.

        RSA. ImportParameters(RSAKeyInfo);



        Iššifruokite perduotą baitų masyvą ir nurodykite OAEP užpildymą.  

        OAEP užpildymas galimas tik "Microsoft Windows XP" arba

        vėliau.  

        grąžinti RSA. Decrypt(DataToDecrypt, DoOAEPPadding);

    }

    Kriptografinės išimties gaudymas ir rodymas  

    prie konsolės.

    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.         }
Kopijuoti kodą






Ankstesnis:Sukurkite savo asmeninį forumą nemokamai, galite užsidirbti pinigų statydami savo vardu, ir tai galite padaryti per tris minutes
Kitą:onclick ir href naudojimas HTML žymoje A
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com