|
|
Geplaatst op 04-11-2015 12:37:23
|
|
|

De projectvereisten: een privésleutel en publieke sleutel genereren, versleutelen met publieke sleutel, ontsleutelen met privésleutel, ik heb het zo geïmplementeerd,
Ik hoop vrienden te kunnen helpen die deze behoefte hebben.
De broncode is als volgt:
1. Genereer een paar sleutels:
/// <summary> Genereer privésleutel en publieke sleutel arr[0] voor privésleutel arr[1] voor publieke sleutel /// </summary> /// <returns></returns> publieke statische string[] GenerateKeys() { string[] sKeys = nieuwe String[2]; RSACryptoServiceProvider rsa = nieuwe RSACryptoServiceProvider(); sKeys[0] = rsa. ToXmlString (waar); sKeys[1] = rsa. ToXmlString (onwaar); Returneer sKeys; }
2. Encryptie:
/// <summary> RSA Versleutel /// </summary> <param name="sSource" >Source-string</param> <param name="sPublicKey" >publieke sleutel</param> /// <returns></returns> publieke statische string EncryptString (string sSource,string sPublicKey) { RSACryptoServiceProvider rsa = nieuwe RSACryptoServiceProvider(); string plaintext = sSource; RSA. FromXmlString (sPublicKey); byte[] cipherbytes; byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false); Cipherbytes = RSA. Encrypt(Encoding.UTF8.GetBytes(plaintext), vals);
StringBuilder sbString = nieuwe StringBuilder(); voor (int i = 0; Ik < cipherbytes. Lengte; i++) { sbString.Append(cipherbytes)+ ","); }
3. Decryptie:
/// <summary> /// RSA Decrypt /// </summary> <param name="sSource">Source-string</param> <param name="sPrivateKey">Private Key</param> /// <returns></returns> publieke statische string DecryptString (String sSource, string sPrivateKey) { RSACryptoServiceProvider rsa = nieuwe RSACryptoServiceProvider(); RSA. FromXmlString(sPrivateKey); byte[] byteEn = rsa. Encrypt(Encoding.UTF8.GetBytes("a"), false); string[] sBytes = sSource.Split(',');
voor (int j = 0; j < sBytes.Length; j++) { als (sBytes[j] != "") { byteEn[j] = Byte.Parse(sBytes[j]); } } byte[] plaintbytes = RSA. Decrypt(byteEn, false); return Encoding.UTF8.GetString(plaintbytes); } return sbString.ToString(); }
--------------------------------------------------------------------
RSA-codecode voor versleuteling en ontsleuteling:
met behulp van System; met behulp van System.Collections.Generic; met behulp van System.Linq; gebruik van System.Text; gebruik van System.Security.Cryptography;
naamruimte MyRSA naamruimte 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)
{
Probeer het
{
Maak een UnicodeEncoder om te converteren tussen bytearray en string.
UnicodeEncoding ByteConverter =new UnicodeEncoding();
Maak een nieuwe instantie van RSACryptoServiceProvider aan om te genereren
publieke en private sleutelgegevens.
RSACryptoServiceProvider RSA =nieuwe RSACryptoServiceProvider();
RSA. FromXmlString (privésleutel);
byte[] versleutelde Data;
byte[] ontsleuteldeData;
encryptedData = Convert.FromBase64String(base64code);
Geef de gegevens door aan DECRYPT, de privésleutelinformatie
(met RSACryptoServiceProvider.ExportParameters(true),
en een booleaanse vlag die geen OAEP-padding aangeeft.
decryptedData = RSADecrypt(
versleutelde data, RSA. ExportParameters(waar), onwaar);
Toon de ontsleutelde platte tekst aan de console.
return ByteConverter.GetString(decryptedData);
}
catch (uitzondering exc.)
{
Uitzonderingen.LogException(exc);
Console.WriteLine (bijv. Boodschap);
terugkeer"";
}
}
staticpublicstring Encrypt(string toEncryptString)
{
Probeer het
{
Maak een UnicodeEncoder om te converteren tussen bytearray en string.
UnicodeEncoding ByteConverter =new UnicodeEncoding();
Maak byte-arrays om originele, versleutelde en ontsleutelde data te bewaren.
byte[] dataToEncrypt =
ByteConverter.GetBytes(toEncryptString);
byte[] versleutelde Data;
byte[] ontsleuteldeData;
Maak een nieuwe instantie van RSACryptoServiceProvider aan om te genereren
publieke en private sleutelgegevens.
RSACryptoServiceProvider RSA =nieuwe RSACryptoServiceProvider();
RSA. FromXmlString (privésleutel);
Geef de gegevens door aan ENCRYPT, de publieke sleutelinformatie
(met RSACryptoServiceProvider.ExportParameters(false),
en een booleaanse vlag die geen OAEP-padding aangeeft.
encryptedData = RSAEncrypt(
dataToEncrypt, RSA. ExportParameters(false), false (false);
string base64code = Convert.ToBase64String(encryptedData);
Returner base64code;
}
catch (uitzondering exc.)
{
Vang deze uitzondering als de encryptie dat wel heeft gedaan
niet slagen.
Uitzonderingen.LogException(exc);
Console.WriteLine (bijv. Boodschap);
terugkeer"";
}
}
staticprivatebyte[] RSAEncrypt(
byte[] DataToEncrypt,
RSAParameters RSAKeyInfo,
bool DoOAEPPadding)
{
Probeer het
{
Maak een nieuwe instantie van RSACryptoServiceProvider aan.
RSACryptoServiceProvider RSA =nieuwe RSACryptoServiceProvider();
Importeer de RSA Key-informatie. Dit hoeft alleen maar
om de publieke sleutelinformatie op te nemen.
RSA. ImportParameters(RSAKeyInfo);
Versleutel de passeerde bytearray en specificeer OAEP-padding.
OAEP-opvulling is alleen beschikbaar op Microsoft Windows XP of
later.
Geef RSA terug. Versleutelen (DataToEncrypt, DoOAEPPadding);
}
Vang en toon een CryptographicException
naar de console.
vangen (CryptographicException e)
{
Uitzonderingen.LogUitzondering(e);
Console.WriteLine(e.Message);
returnnull;
}
}
staticprivatebyte[] RSADecrypt(
byte[] DataToDecrypt,
RSAParameters RSAKeyInfo,
bool DoOAEPPadding)
{
Probeer het
{
Maak een nieuwe instantie van RSACryptoServiceProvider aan.
RSACryptoServiceProvider RSA =nieuwe RSACryptoServiceProvider();
Importeer de RSA Key-informatie. Dit heeft nodig
om de privésleutelinformatie op te nemen.
RSA. ImportParameters(RSAKeyInfo);
Decrypteer de passe byte-array en specificeer OAEP-padding.
OAEP-opvulling is alleen beschikbaar op Microsoft Windows XP of
later.
Geef RSA terug. Decrypt(DataToDecrypt, DoOAEPPadding);
}
Vang en toon een CryptographicException
naar de console.
vangen (CryptographicException e)
{
Uitzonderingen.LogUitzondering(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();
- }
Code kopiëren
|
Vorig:Bouw je eigen persoonlijke forum gratis, je kunt geld verdienen door namens jou te bouwen, en je kunt het in drie minuten doenVolgend:Gebruik van onclick en href in de A-tag in HTML
|