static void Main(string[] args) { byte[] bts = Encoding.UTF8.GetPreamble(); string s2 = "/a/b/c/text.txt"; string dir = Path.GetDirectoryName(s2); //// gen keys //QuickRSA.KeyPair keys = QuickRSA.GenerateKeyPair(); //// save keys //File.WriteAllBytes("c:\\tmp\\privatekey2048.xml", ASCIIEncoding.ASCII.GetBytes(keys.PrivateKey)); //File.WriteAllBytes("c:\\tmp\\publickey2048.xml", ASCIIEncoding.ASCII.GetBytes(keys.PublicKey)); //QuickRSA.CreateKeyPair("c:\\tmp\\keys\\"); QuickRSA qrsa = new QuickRSA(); qrsa.LoadKey(UTF32Encoding.ASCII.GetString(File.ReadAllBytes("c:\\tmp\\privatekey2048.xml"))); // save public key //string pub_xml = qrsa.RSA.ToXmlString( false ); //File.WriteAllBytes("c:\\tmp\\My_Public.key", ASCIIEncoding.ASCII.GetBytes(pub_xml)); qrsa.SaveKey("c:\\tmp\\My_Public2.key", true); ////NO GO! -- byte[] data = File.ReadAllBytes("C:\\tmp\\infiles\\Desert.jpg"); byte[] data = ASCIIEncoding.ASCII.GetBytes("Hello World!"); byte[] enc_data = qrsa.Encrypt(data); byte[] denc_data = qrsa.Decrypt(enc_data); string s = ASCIIEncoding.ASCII.GetString(denc_data); byte[] signed_data = qrsa.SignData(enc_data, "c:\\tmp\\privatekey2048.xml"); bool v = qrsa.VerifyData(enc_data, signed_data); /////////////// TEST AES_RSA_HYBRID /////////////////// byte[] rsa_aes_data = null; using (QuickRSA rsa1 = new QuickRSA()) { rsa1.LoadKey(UTF32Encoding.ASCII.GetString(File.ReadAllBytes("c:\\tmp\\privatekey2048.xml"))); byte[] data3 = File.ReadAllBytes("C:\\tmp\\infiles\\Desert.jpg"); rsa_aes_data = rsa1.Encrypt_RSA_AES(data3, "c:\\tmp\\privatekey2048.xml"); } using (QuickRSA rsa2 = new QuickRSA()) { rsa2.LoadKey(UTF32Encoding.ASCII.GetString(File.ReadAllBytes("c:\\tmp\\privatekey2048.xml"))); byte[] final = rsa2.Decrypt_RSA_AES(rsa_aes_data, true); //string s2 = ASCIIEncoding.ASCII.GetString(final); File.WriteAllBytes("c:\\tmp\\data67.jpg", final); bool ok = rsa2.VerifyData_RSA_AES(rsa_aes_data); } //////////////////////////////////////////////////////// //// testing ////byte[] key = new byte[32]; //byte[] key = CryptoFunctions.GererateKey(32); //byte[] k2 = CryptoFunctions.GererateKey(32); byte[] k2 = CryptoFunctions.GenerateRandomBytes(32); //byte[] iv = CryptoFunctions.GererateKey(16); byte[] iv = CryptoFunctions.GenerateRandomBytes(16); ////test2 byte[] data2 = File.ReadAllBytes("C:\\tmp\\infiles\\Desert.jpg"); byte[] aes_enc_data = CryptoFunctions.EncryptAES(k2, data2, iv); CryptoFunctions.DecryptAES(k2, aes_enc_data, iv); }