|
|
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;
}
}
}
}
- static void Main(string[] args)
- {
- string encodeString = MyRSA.Encrypt("1234567");
- Console.WriteLine(encodeString);
- string decode = MyRSA.Decrypt(encodeString);
- Console.WriteLine(decode);
- Console.ReadLine();
- }
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ēsNākamo:onclick un href izmantošana HTML tagā A
|