|
|
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;
}
}
}
}
- static void Main(string[] args)
- {
- string encodeString = MyRSA.Encrypt("1234567");
- Console.WriteLine(encodeString);
- string decode = MyRSA.Decrypt(encodeString);
- Console.WriteLine(decode);
- Console.ReadLine();
- }
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 megtehetedKövetkező:Az onclick és href használata az A címkében HTML-ben
|