Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 18182|Válasz: 0

[Forrás] A C# részletesen valósítja meg az RSA titkosítást és a visszafejtést

[Linket másol]
Közzétéve 2015. 11. 04. 12:37:23 | | |
A projekt követelménye: privát és nyilvános kulcs generálása, nyilvános kulmilla titkosítás, privát kulmilla történő dekódolás, így valósítottam meg,



Remélem, segíthetek azoknak a barátoknak, akiknek ez a szüksége van.







A forráskód a következő:



1. Generálj egy pár kulcsot:



          /// <summary>
        generálj privát kulcsot és nyilvános kulcsot ARR[0] privát kulcs ARR[1] számára a nyilvános kulcshoz
        /// </summary>
        /// <returns></returns>
        nyilvános statikus string[] GenerateKeys()
        {
            string[] sKeys = új String[2];
            RSACryptoServiceProvider rsa = új RSACryptoServiceProvider();
            sKeys[0] = rsa. ToXmlString(true);
            sKeys[1] = rsa. ToXmlString(hamis);
            return sKeys;
        }



2. Titkosítás:



      /// <summary>
        RSA Titkosítás
        /// </summary>
       <param name="sSource" >Source string</param>
        <param name="sPublicKey" >public key</param>
        /// <returns></returns>
        public static string EncryptString(string sSource, string sPublicKey)
        {
            RSACryptoServiceProvider rsa = új RSACryptoServiceProvider();
            string plaintext = sSource;
            RSA. FromXmlString(sPublicKey);
            bájt[] titkosított bájt;
            byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false);
            Cipherbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(tiszta szöveg), hamis);



            StringBuilder sbString = új StringBuilder();
            for (int i = 0; Titkosított bájtot <. Hossz; i++)
            {
                sbString.Append(cipherbytes+ ",");
            }



3. Fejtés feloldás:



  /// <summary>
        RSA Titkosítás
        /// </summary>
        <param name="sSource">Source string</param>
        <param name="sPrivateKey">Private Key</param>
        /// <returns></returns>
        public static string DecryptString(String sSource, string sPrivateKey)
        {
            RSACryptoServiceProvider rsa = új 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]);
                }
            }
            Byte[] plaintbytes = RSA. Decrypt(byteEn, hamis);
            return Encoding.UTF8.GetString(plaintbytes);
        }
            return sbString.ToString();
        }





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

RSA titkosítás és dekódolás forráskód:

System használatával;
System.Collections.Generic használatával;
a System.Linq használatával;
System.Text használatával;
System.Security.Cryptography használatával;

névtér MyRSA
névtér 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)

{

    próbáld ki

    {



        Hozz létre UnicodeEncodert, hogy bájttömb és string között konvertálj.

        UnicodeEncoding ByteConverter = új UnicodeEncoding();



        Hozz létre egy új RSACryptoServiceProvider példányt a generáláshoz

        nyilvános és privát kulcsadatok.

        RSACryptoServiceProvider RSA =új RSACryptoServiceProvider();

        RSA. FromXmlString(privateKey);



        byte[] encryptedData;

        byte[] decryptedData;

        encryptedData = Convert.FromBase64String(base64code);



        Add át az adatokat a DECRYPT-nek, a privát kulcs információnak

        (RSACryptoServiceProvider.ExportParameters(true) használatával),

        és egy boolean zászló, amely nem tartalmaz OAEP párnázást.

        decryptedData = RSADecrypt(

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



        Jelenítse meg a lefejtett tiszta szöveget a konzolon.

        return ByteConverter.GetString(decryptedData);

    }

    catch (kivétel exc)

    {

        Exceptions.LogException(exc);

        Console.WriteLine(kivéve Üzenet);

        visszatérés"";

    }

}



staticpublicstring Encrypt(string toEncryptString)

{

    próbáld ki

    {

        Hozz létre UnicodeEncodert, hogy bájttömb és string között konvertálj.

        UnicodeEncoding ByteConverter = új UnicodeEncoding();



        Hozz létre bájttömböket, amelyek eredeti, titkosított és dekódolt adatokat tárolnak.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

        byte[] encryptedData;

        byte[] decryptedData;



        Hozz létre egy új RSACryptoServiceProvider példányt a generáláshoz

        nyilvános és privát kulcsadatok.

        RSACryptoServiceProvider RSA =új RSACryptoServiceProvider();



        RSA. FromXmlString(privateKey);



        Add át az adatokat az ENCRYPT-nek, a nyilvános kulcs információnak

        (RSACryptoServiceProvider.ExportParameters(false) használatával),

        és egy boolean zászló, amely nem tartalmaz OAEP párnázást.

        encryptedData = RSAEncrypt(

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



        string base64code = Convert.ToBase64String(encryptedData);

        vissza base64code;

    }

    catch (kivétel exc)

    {

        Fogd meg ezt a kivételt, ha a titkosítás megtörtént

        nem sikerül.

        Exceptions.LogException(exc);

        Console.WriteLine(kivéve Üzenet);

        visszatérés"";

    }







}



staticprivatebyte[] RSAEncrypt(

    byte[] DataToEncrypt,

    RSAParaméterek RSAKeyInfo,

    bool DoOAEPPadding)

{

    próbáld ki

    {

        Hozz létre egy új RSACryptoServiceProvider példányt.

        RSACryptoServiceProvider RSA =új RSACryptoServiceProvider();



        Importáld az RSA kulcs adatait. Ez csak annyit igényel

        hogy beépítsék a nyilvános kulcsinformációkat is.

        RSA. ImportParameters(RSAKeyInfo);



        Titkosítsd a passz bájttömböt és határozd meg az OAEP párosítást.  

        Az OAEP párnázás csak Microsoft Windows XP-n vagy

        később.  

        Return RSA. Encrypt(DataToEncrypt, DoOAEPPadding);

    }

    Fogd meg és jeleníts meg egy KriptográfiaKivételt  

    a konzolra.

    catch (KriptográfiaKivétel e)

    {

        Exceptions.LogException(e);

        Console.WriteLine(e.Message);



        returnnull;

    }



}



staticprivatebyte[] RSADecrypt(

    byte[] DataToDecrypt,

    RSAParaméterek RSAKeyInfo,

    bool DoOAEPPadding)

{

    próbáld ki

    {

        Hozz létre egy új RSACryptoServiceProvider példányt.

        RSACryptoServiceProvider RSA =új RSACryptoServiceProvider();



        Importáld az RSA kulcs adatait. Ez szükséges

        hogy bevonjuk a privát kulcs adatait.

        RSA. ImportParameters(RSAKeyInfo);



        Fejtse ki a passzolt bájttömböt és határozza meg az OAEP párnázást.  

        Az OAEP párnázás csak Microsoft Windows XP-n vagy

        később.  

        Return RSA. Decrypt(DataToDecrypt, DoOAEPPadding);

    }

    Fogd meg és jeleníts meg egy KriptográfiaKivételt  

    a konzolra.

    catch (KriptográfiaKivétel 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.         }
Kód másolása






Előző:Építs ingyen saját személyes fórumot, pénzt kereshetsz azzal, hogy a nevedben építkezel, és három perc alatt megteheted
Következő:Az onclick és href használata az A címkében HTML-ben
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com