Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 18182|Atbildi: 0

[Avots] C# detalizēti īsteno RSA šifrēšanu un atšifrēšanu

[Kopēt saiti]
Publicēts 04.11.2015 12:37:23 | | |
Projekta prasības, ģenerējiet privāto atslēgu un publisko atslēgu, šifrējiet ar publisko atslēgu, atšifrējiet ar privāto atslēgu, es to īstenoju šādi,



Es ceru, ka palīdzēšu draugiem, kuriem ir šī vajadzība.







Avota kods ir šāds:



1. Ģenerējiet atslēgu pāri:



          /// <summary>
        ģenerēt privāto atslēgu un publisko atslēgu ARR[0] privātajai atslēgai ARR[1] publiskajai atslēgai
        /// </summary>
        /// <returns></returns>
        publiskā statiskā virkne[] ĢenerētAtslēgas()
        {
            string[] sKeys = jauna virkne[2];
            RSACryptoServiceProvider rsa = jauns RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(true);
            sKeys[1] = rsa. ToXmlString(false);
            atgriezt sKeys;
        }



2. Šifrēšana:



      /// <summary>
        RSA šifrēšana
        /// </summary>
       <param name="sSource" >Avota virkne</param>
        <param name="sPublicKey" >publiskā atslēga</param>
        /// <returns></returns>
        publiskā statiskā virkne EncryptString(virkne sSource,virkne sPublicKey)
        {
            RSACryptoServiceProvider rsa = jauns RSACryptoServiceProvider();
            virkne vienkāršs teksts = sAvots;
            RSA. FromXmlString(sPublicKey);
            baiti[] cipherbytes;
            baits[] baitsEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            cipherbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(vienkāršs teksts), false);



            StringBuilder sbString = jauns StringBuilder();
            for (int i = 0; Es < cipherbytes. Garums; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Atšifrēšana:



  /// <summary>
        RSA atšifrēšana
        /// </summary>
        <param name="sSource">Avota virkne</param>
        <param name="sPrivateKey">Privātā atslēga</param>
        /// <returns></returns>
        publiskā statiskā virkne DecryptString(Virkne sSource, virkne sPrivateKey)
        {
            RSACryptoServiceProvider rsa = jauns RSACryptoServiceProvider();
            RSA. FromXmlString(sPrivateKey);
            baits[] baitsEn = 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]);
                }
            }
            baits[] plaintbytes = RSA. Decrypt(byteEn, false);
            atgriezt Encoding.UTF8.GetString(plaintbytes);
        }
            atgriezt sbString.ToString();
        }





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

RSA šifrēšanas un atšifrēšanas avota kods:

izmantojot Sistēmu;
izmantojot System.Collections.Generic;
izmantojot System.Linq;
izmantojot System.Text;
izmantojot System.Security.Cryptography;

nosaukumvieta MyRSA
nosaukumvieta MyRSA

{

publiskā klase 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)

{

    izmēģināt

    {



        Izveidojiet UnicodeEncoder, lai konvertētu starp baitu masīvu un virkni.

        UnicodeEncoding ByteConverter =jauns UnicodeEncoding();



        Jaunas RSACryptoServiceProvider instances izveide ģenerēšanai

        publiskās un privātās atslēgas dati.

        RSACryptoServiceProvider RSA =jauns RSACryptoServiceProvider();

        RSA. FromXmlString(privateKey);



        baits[] šifrēti dati;

        baits[] decryptedData;

        encryptedData = Convert.FromBase64String(base64code);



        Nododiet datus privātās atslēgas informācijai DECRYPT

        (izmantojot RSACryptoServiceProvider.ExportParameters(true),

        un Būla karodziņš, kas nenorāda OAEP polsterējumu.

        decryptedData = RSADecrypt(

            šifrēti dati, RSA. ExportParameters(true), false);



        Parādiet atšifrēto vienkāršo tekstu konsolē.

        atgriezt ByteConverter.GetString(decryptedData);

    }

    nozveja (izņēmums bez maksas)

    {

        Exceptions.LogException(exc);

        Console.WriteLine(exc. Ziņojums);

        atgriešanās"";

    }

}



staticpublicstring Encrypt(virkne uzEncryptString)

{

    izmēģināt

    {

        Izveidojiet UnicodeEncoder, lai konvertētu starp baitu masīvu un virkni.

        UnicodeEncoding ByteConverter =jauns UnicodeEncoding();



        Izveidojiet baitu masīvus, lai glabātu oriģinālus, šifrētus un atšifrētus datus.

        baits[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        baits[] šifrēti dati;

        baits[] decryptedData;



        Jaunas RSACryptoServiceProvider instances izveide ģenerēšanai

        publiskās un privātās atslēgas dati.

        RSACryptoServiceProvider RSA =jauns RSACryptoServiceProvider();



        RSA. FromXmlString(privateKey);



        Nododiet datus ENCRYPT, publiskās atslēgas informācijai

        (izmantojot RSACryptoServiceProvider.ExportParameters(false),

        un Būla karodziņš, kas nenorāda OAEP polsterējumu.

        encryptedData = RSAEncrypt(

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



        virkne base64code = Convert.ToBase64String(encryptedData);

        atgriezt base64code;

    }

    nozveja (izņēmums bez maksas)

    {

        Noķeriet šo izņēmumu, ja šifrēšana to darīja

        neizdodas.

        Exceptions.LogException(exc);

        Console.WriteLine(exc. Ziņojums);

        atgriešanās"";

    }







}



staticprivatebyte[] RSAEncrypt(

    baits[] DataToEncrypt,

    RSAParametri RSAKeyInfo,

    bool DoOAEPPadding)

{

    izmēģināt

    {

        Izveidojiet jaunu RSACryptoServiceProvider instanci.

        RSACryptoServiceProvider RSA =jauns RSACryptoServiceProvider();



        Importējiet RSA atslēgas informāciju. Tam ir nepieciešams tikai

        iekļaut publiskās atslēgas informāciju.

        RSA. ImportParameters(RSAKeyInfo);



        Šifrējiet nodoto baitu masīvu un norādiet OAEP polsterējumu.  

        OAEP polsterējums ir pieejams tikai operētājsistēmā Microsoft Windows XP vai

        vēlāk.  

        atgriezties RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    CryptographicException noķeršana un parādīšana  

    uz konsoli.

    nozveja (CryptographicException e)

    {

        Izņēmumi.LogIzņēmums(e);

        Console.WriteLine(e.Message);



        atgriešanāsnulle;

    }



}



staticprivatebyte[] RSADecrypt(

    baits[] DataToDecrypt,

    RSAParametri RSAKeyInfo,

    bool DoOAEPPadding)

{

    izmēģināt

    {

        Izveidojiet jaunu RSACryptoServiceProvider instanci.

        RSACryptoServiceProvider RSA =jauns RSACryptoServiceProvider();



        Importējiet RSA atslēgas informāciju. Tam ir nepieciešams

        , lai iekļautu informāciju par privāto atslēgu.

        RSA. ImportParameters(RSAKeyInfo);



        Atšifrējiet nodoto baitu masīvu un norādiet OAEP polsterējumu.  

        OAEP polsterējums ir pieejams tikai operētājsistēmā Microsoft Windows XP vai

        vēlāk.  

        atgriezties RSA. Decrypt(DataToDecrypt, DoOAEPPadding);

    }

    CryptographicException noķeršana un parādīšana  

    uz konsoli.

    nozveja (CryptographicException e)

    {

        Izņēmumi.LogIzņēmums(e);

        Console.WriteLine(e.Message);



        atgriešanāsnulle;

    }

}

}

}

  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ēt kodu






Iepriekšējo:Izveidojiet savu personīgo forumu bez maksas, jūs varat nopelnīt naudu, veidojot jūsu vārdā, un jūs varat to izdarīt trīs minūtēs
Nākamo:onclick un href izmantošana HTML tagā A
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com