|
|
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;
}
}
}
}
- static void Main(string[] args)
- {
- string encodeString = MyRSA.Encrypt("1234567");
- Console.WriteLine(encodeString);
- string decode = MyRSA.Decrypt(encodeString);
- Console.WriteLine(decode);
- Console.ReadLine();
- }
Kopijuoti kodą
|
Ankstesnis:Sukurkite savo asmeninį forumą nemokamai, galite užsidirbti pinigų statydami savo vardu, ir tai galite padaryti per tris minutesKitą:onclick ir href naudojimas HTML žymoje A
|