I generated a private/public key pair using the command openssl genrsa -out totorialspedia.key 2048. I then extracted the public key using the command openssl rsa -in totorialspedia.key -pubout -out tutorialspedia_public.key. I also created a CSR file and provided the required information such as country name, state, locality name, organization name, organization unit name, common name, email address, and password.
Now, I have a totorialspedia.key file as the private key, which contains the public key, and a tutorialspedia_public.key file as the public key. I also have a tutorialspedia.csr file as the CSR.
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkWrg1qp2lMmNC
RmUDRw88Mxsh8SDVdNWOxXk3ibAyCJheLMkGnJJNxXxBj0RvVRDgTC+b3PpUFLr2
Q25hdp+jSAX9x0/9TfPJfnlYwglyXI+mN/DXlZSR+d2qcBnyJvJMvzm7FiUdtSDT
SiaJQzQqShD3c3Dt8lP59uLWeg+WnRS3qLOCAkRA7O+fF2Ve6zWga7I1OYhMgGb8
rSZXFcDdoaWjFbU4XMu/91AXQUxcAvftzLj+MUo0C+vDcd+5Hdp2aK8YemYrLrU4
pom8emkDmfRzcqMeal24sj2zw//ywVVKgRRS6IHW5JUcrAOHbJl+559iCPfORQDo
ayhxJqF5AgMBAAECggEABQThtv7Xu1uhcRzP+SSGhDS91YCk+2vK2UYxzFbDtxVw
3MBin7VwmNgo8iIXSYyYHDdrZUe/a8mpx3s579dE6wI4L56ydEZ5BUxb1ZBwZCoM
N3viGp1OaRJPuQSdIDpdACe/UjWsCr8VKmqraFnxagCyybHAbz3NH3cxCHJ4DyX+
le1YNU/4XCAnyVn9GqW5Qf/O7SibVMCm8hsP1dQUiqrskA2rUPhEVkwDMyVWLflH
veXuO40JPbFEbGk9SPitsSq7LcAxt76RIqvFhBWj0lxF5hq4advSxpcPD3z+4/7j
vNObYbPBr3OIJCEsV8PwzeLNAVh3oGsKbaWAee7zoQKBgQDaz9nHhsDsUfE5ZYUb
HtYZEdWy8fms/b8FjsKhMFgNOD+mBAuRuWlIhcugrY87a9pXu0I54n81migSdzPd
GeP7E7/NUJ01LgY/lddvgpQWQ0M77nDCmlKm4mxV2mWF3P8sqIsJTP7H1JygJPuP
xTayQ2pezlyUjXILiUjmuvrGoQKBgQDASYKSrcQD/rboB55Z91KRxp5y5kDNJLTa
EL9HBB6gswabnOY+d7KS765dIRGfcL9XskmAHivpTj63K6LDjOQuvhxTi3lLy1kM
q3BgKh1WYXrWuPTT4/r7EruQxFYZIPZ+LZzs+OFYxOdKocnAFP9S6Ja8lbk25fwu
ilQ9FURj2QKBgEYHxeys/SvlYe37xukSKnWllp6KAV3TbIKr2TDblyLMANryan1+
OOsEH1LSmYfsEdqITT7Xdd1C9FZMnmXCNowSGw3sIhR2IXvSSjwfL6QcbPVOb/po
h9FvoDquBlYcj/LMEousf9KXAnXiwDyYYtQU7YNgSpMk3f5BNvrZlw9hAoGBALgK
I6VMF15TfrDaCd/F7guEdMc4RjGSvl4wxUKtWLsqXlq2c1C6s/oa2WJdckaOXTUM
eXjcZ97nevNKGoDb6tIqN2ZnCfNXb6XGuMnxxR6WMkItyHa9r8x7A3bt1BI9EG94
LMhK9TRHUbCG5VipQC8UWqGpFBrNSO8qirHkFw8RAoGBAMEDPT1bjhGGIfWEEs4A
jY/BXkFMwXENqDhWXtt0E4dJE/Pbp9ca1rs30nTUPf05Q345PRGQtHi4vOnT+TtS
h1wcdbsnd5VKD2G+gjmvcZg/VJtFMCtSjKSY2MTHZps/KvMC+LjsHJ3J4zlLUN+z
Ez3EEDhaJgooZNiSsyLo5A6P
-----END PRIVATE KEY-----
and a tutorialspedia_public.key as a public key file like this:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFq4NaqdpTJjQkZlA0cP
PDMbIfEg1XTVjsV5N4mwMgiYXizJBpySTcV8QY9Eb1UQ4Ewvm9z6VBS69kNuYXaf
o0gF/cdP/U3zyX55WMIJclyPpjfw15WUkfndqnAZ8ibyTL85uxYlHbUg00omiUM0
KkoQ93Nw7fJT+fbi1noPlp0Ut6izggJEQOzvnxdlXus1oGuyNTmITIBm/K0mVxXA
3aGloxW1OFzLv/dQF0FMXAL37cy4/jFKNAvrw3HfuR3admivGHpmKy61OKaJvHpp
A5n0c3KjHmpduLI9s8P/8sFVSoEUUuiB1uSVHKwDh2yZfuefYgj3zkUA6GsocSah
eQIDAQAB
-----END PUBLIC KEY-----
and a tutorialspedia.csr file like this:
-----BEGIN CERTIFICATE REQUEST-----
MIIC1DCCAbwCAQAwgY4xCzAJBgNVBAYTAklSMQ8wDQYDVQQIDAZUZWhyYW4xDzAN
BgNVBAcMBlRlaHJhbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRk
MRIwEAYDVQQLDAlFRUZBQ0VSQU0xJjAkBgkqhkiG9w0BCQEWF2phdmFoZXJpX2tp
YW5AeWFob28uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFq4
NaqdpTJjQkZlA0cPPDMbIfEg1XTVjsV5N4mwMgiYXizJBpySTcV8QY9Eb1UQ4Ewv
m9z6VBS69kNuYXafo0gF/cdP/U3zyX55WMIJclyPpjfw15WUkfndqnAZ8ibyTL85
uxYlHbUg00omiUM0KkoQ93Nw7fJT+fbi1noPlp0Ut6izggJEQOzvnxdlXus1oGuy
NTmITIBm/K0mVxXA3aGloxW1OFzLv/dQF0FMXAL37cy4/jFKNAvrw3HfuR3admiv
GHpmKy61OKaJvHppA5n0c3KjHmpduLI9s8P/8sFVSoEUUuiB1uSVHKwDh2yZfuef
Ygj3zkUA6GsocSaheQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAIiOy2SYXE9v
Dc92ovD+MH9OgXJYnk1doGOzxJ6cSBZJyBOSXhMmMbOrRhxlufU6r0XVTqu4+C29
BF+ZHBpHdg5k1HGS0OPkYMnSTubATz/C2Xe6R95yQkK+yCpLLA3c2szikcXQ0Ccw
f7TwtC9AEr3VpS0q2hIB+alX7P29m0kdPUJjZWBWWvgMHAqyJqaZ8AOIZF3rpvNx
oWNbwUSLfzKzhVxFiXJRNPg5YMDxcFdayUiNngdylbvglUgNNVHXS6JWKi8JvEOn
ubF/xT1y8uTkXwfH/Zc4Frb6HCVVfMsY4Cph3YUdUJLkspFCPxi3eQciKw8353x7
Fo/W+fz45uQ=
-----END CERTIFICATE REQUEST-----
I want to know if these files are valid, match each other and can work correctly. I tried this code to encrypt a simple text and decrypt it by my keys but it didn't work
using System;
using System.Security.Cryptography;
using System.Text;
namespace ssl
{
internal class Program
{
static void Main(string[] args)
{
// the data to be encrypted
string dataToEncrypt = "Hello World!";
// convert the public key string to a byte array
byte[] publicKeyBytes = Convert.FromBase64String("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFq4NaqdpTJjQkZlA0cPPDMbIfEg1XTVjsV5N4mwMgiYXizJBpySTcV8QY9Eb1UQ4Ewvm9z6VBS69kNuYXafo0gF/cdP/U3zyX55WMIJclyPpjfw15WUkfndqnAZ8ibyTL85uxYlHbUg00omiUM0KkoQ93Nw7fJT+fbi1noPlp0Ut6izggJEQOzvnxdlXus1oGuyNTmITIBm/K0mVxXA3aGloxW1OFzLv/dQF0FMXAL37cy4/jFKNAvrw3HfuR3admivGHpmKy61OKaJvHppA5n0c3KjHmpduLI9s8P/8sFVSoEUUuiB1uSVHKwDh2yZfuefYgj3zkUA6GsocSaheQIDAQAB");
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportSubjectPublicKeyInfo(publicKeyBytes, out _);
// create an RSACryptoServiceProvider object and load the public key
//RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
//rsa.ImportRSAPublicKey(publicKeyBytes, out _);
// convert the data to a byte array
byte[] dataBytes = Encoding.UTF8.GetBytes(dataToEncrypt);
// encrypt the data using the public key
byte[] encryptedData = rsa.Encrypt(dataBytes, true);
// convert the encrypted data to a base64-encoded string
string base64EncryptedData = Convert.ToBase64String(encryptedData);
//****************************************************************************
// the data to be encrypted
// convert the encrypted data from base64 to a byte array
byte[] encryptedData2 = Convert.FromBase64String(base64EncryptedData);
// convert the private key string to a byte array
byte[] privateKeyBytes = Convert.FromBase64String("MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCkWrg1qp2lMmNCRmUDRw88Mxsh8SDVdNWOxXk3ibAyCJheLMkGnJJNxXxBj0RvVRDgTC + b3PpUFLr2Q25hdp + jSAX9x0 / 9TfPJfnlYwglyXI + mN / DXlZSR + d2qcBnyJvJMvzm7FiUdtSDTSiaJQzQqShD3c3Dt8lP59uLWeg + WnRS3qLOCAkRA7O + fF2Ve6zWga7I1OYhMgGb8rSZXFcDdoaWjFbU4XMu / 91AXQUxcAvftzLj + MUo0C + vDcd + 5Hdp2aK8YemYrLrU4pom8emkDmfRzcqMeal24sj2zw//ywVVKgRRS6IHW5JUcrAOHbJl+559iCPfORQDoayhxJqF5AgMBAAECggEABQThtv7Xu1uhcRzP + SSGhDS91YCk + 2vK2UYxzFbDtxVw3MBin7VwmNgo8iIXSYyYHDdrZUe / a8mpx3s579dE6wI4L56ydEZ5BUxb1ZBwZCoMN3viGp1OaRJPuQSdIDpdACe / UjWsCr8VKmqraFnxagCyybHAbz3NH3cxCHJ4DyX +le1YNU / 4XCAnyVn9GqW5Qf / O7SibVMCm8hsP1dQUiqrskA2rUPhEVkwDMyVWLflHveXuO40JPbFEbGk9SPitsSq7LcAxt76RIqvFhBWj0lxF5hq4advSxpcPD3z + 4 / 7jvNObYbPBr3OIJCEsV8PwzeLNAVh3oGsKbaWAee7zoQKBgQDaz9nHhsDsUfE5ZYUbHtYZEdWy8fms / b8FjsKhMFgNOD + mBAuRuWlIhcugrY87a9pXu0I54n81migSdzPdGeP7E7 / NUJ01LgY / lddvgpQWQ0M77nDCmlKm4mxV2mWF3P8sqIsJTP7H1JygJPuPxTayQ2pezlyUjXILiUjmuvrGoQKBgQDASYKSrcQD / rboB55Z91KRxp5y5kDNJLTaEL9HBB6gswabnOY + d7KS765dIRGfcL9XskmAHivpTj63K6LDjOQuvhxTi3lLy1kMq3BgKh1WYXrWuPTT4 / r7EruQxFYZIPZ + LZzs + OFYxOdKocnAFP9S6Ja8lbk25fwuilQ9FURj2QKBgEYHxeys / SvlYe37xukSKnWllp6KAV3TbIKr2TDblyLMANryan1 +OOsEH1LSmYfsEdqITT7Xdd1C9FZMnmXCNowSGw3sIhR2IXvSSjwfL6QcbPVOb / poh9FvoDquBlYcj / LMEousf9KXAnXiwDyYYtQU7YNgSpMk3f5BNvrZlw9hAoGBALgKI6VMF15TfrDaCd / F7guEdMc4RjGSvl4wxUKtWLsqXlq2c1C6s / oa2WJdckaOXTUMeXjcZ97nevNKGoDb6tIqN2ZnCfNXb6XGuMnxxR6WMkItyHa9r8x7A3bt1BI9EG94LMhK9TRHUbCG5VipQC8UWqGpFBrNSO8qirHkFw8RAoGBAMEDPT1bjhGGIfWEEs4AjY / BXkFMwXENqDhWXtt0E4dJE / Pbp9ca1rs30nTUPf05Q345PRGQtHi4vOnT + TtSh1wcdbsnd5VKD2G + gjmvcZg / VJtFMCtSjKSY2MTHZps / KvMC + LjsHJ3J4zlLUN + zEz3EEDhaJgooZNiSsyLo5A6P");
// create an RSACryptoServiceProvider object
RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();
// create an RSAParameters object to hold the private key parameters
RSAParameters privateKeyParams = new RSAParameters();
// set the private key parameters from the byte array
privateKeyParams.Modulus = publicKeyBytes;
privateKeyParams.D = privateKeyBytes;
// import the private key parameters into the RSACryptoServiceProvider object
rsa2.ImportParameters(privateKeyParams);
// decrypt the data
byte[] decryptedData = rsa.Decrypt(encryptedData2, false);
// display the decrypted data
Console.WriteLine("Decrypted data: " + Encoding.UTF8.GetString(decryptedData));
}//end main
}
}
Thank you for your help.