static void Main(string[] args)
 {
     try
     {
         Console.WriteLine("Ingrese el texto por cifrar:");
         string text = Console.ReadLine();
         Console.WriteLine("Ingrese p:");
         int p = int.Parse(Console.ReadLine());
         Console.WriteLine("Ingrese q:");
         int q   = int.Parse(Console.ReadLine());
         var rsa = new RSAEncryptor("..//..//..");
         int n   = rsa.N(p, q);
         Console.WriteLine("n: " + n);
         int fi = rsa.Fi(p, q);
         Console.WriteLine("fi: " + fi);
         int e = rsa.E(fi);
         Console.WriteLine("e: " + e);
         int d = rsa.D(e, fi);
         Console.WriteLine("d: " + d);
         Console.WriteLine("El texto cifrado es:");
         string cipher = rsa.ShowCipher(text, n, e);
         Console.WriteLine(cipher);
         Console.WriteLine("El texto descifrado es:");
         Console.WriteLine(rsa.ShowCipher(cipher, n, d));
         Console.ReadKey();
     }
     catch
     {
         Console.WriteLine("Ha ocurrido un error.");
         Main(args);
     }
 }
Exemple #2
0
 public static bool PQValidness(string p, string q)
 {
     try
     {
         var pnumber    = Convert.ToInt32(p);
         var qnumber    = Convert.ToInt32(q);
         var pqnumber   = pnumber * qnumber;
         var longnumber = long.Parse(p) * long.Parse(q);
         if (longnumber > int.MaxValue)
         {
             return(false);
         }
         if (RSAEncryptor.IsPrime(pnumber) && RSAEncryptor.IsPrime(qnumber) && p != q && pqnumber > 256)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch
     {
         return(false);
     }
 }
Exemple #3
0
        private void btnEncrypt_Click(object sender, EventArgs e)
        {
            if (this.comboBox1.SelectedIndex == 0)
            {
                string       seckey  = "tjlx4Xd_dXa6xsC3pq-uX92h";
                DESEncryptor cryptor = new DESEncryptor(seckey);
                this.txtEncrypt.Text = cryptor.Encrypt(this.txtPlain.Text);
            }
            if (this.comboBox1.SelectedIndex == 1)
            {
                RSAEncryptor cryptor = new RSAEncryptor(null, null);
                this.txtEncrypt.Text = cryptor.Encrypt(this.txtPlain.Text);
            }
            if (this.comboBox1.SelectedIndex == 2) //HMACSHA256
            {
                RSAEncryptor cryptor = new RSAEncryptor(null, null);
                this.txtEncrypt.Text = cryptor.Encrypt(this.txtPlain.Text);
            }
            else
            {
                string   pwd = "800:6cc3cfc47dbd03c1cbc60398b0988a:186e5678c8b40921e56e847807b7de";
                string[] arr = pwd.Split(':');


                HMACSHA1Encryptor eb = new HMACSHA1Encryptor(arr[1], Convert.ToInt32(arr[0]));

                string arreer = eb.Encrypt("1");
            }
        }
Exemple #4
0
        public static string GetZip(string path, string p, string q)
        {
            var encryptor  = new RSAEncryptor();
            var savingPath = $"{path}/Keys";

            if (Directory.Exists(savingPath))
            {
                if (File.Exists($"{savingPath}/public.key"))
                {
                    File.Delete($"{savingPath}/public.key");
                }

                if (File.Exists($"{savingPath}/private.key"))
                {
                    File.Delete($"{savingPath}/private.key");
                }
            }
            else
            {
                Directory.CreateDirectory(savingPath);
            }
            encryptor.GetKeys(p, q, savingPath);

            return(savingPath);
        }
Exemple #5
0
        static async Task <string> AuthenticateAsync()
        {
            var client = new HttpClient();

            client.BaseAddress = new Uri("https://localhost:44321/api/v1/");

            var rsaKeyResponse = await client.GetAsync("security/public-key/rsa");

            var rsaKeyStr = await rsaKeyResponse.Content.ReadAsStringAsync();

            RSAEncryptor.ImportPublicKeyPKCS1(rsaKeyStr);

            var username = "******";
            var password = "******";

            password = RSAEncryptor.EncryptString(password);

            var response = await client.PostAsync(
                "account/login",
                new StringContent(JsonConvert.SerializeObject(new { username, password }), Encoding.UTF8, "application/json"));

            var responseStr = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject <JToken>(responseStr);

            return(result["jwt"].Value <string>());
        }
        private void EncryptFile()
        {
            byte[]     message   = File.ReadAllBytes(openFileDialog.FileName);
            BigInteger p         = BigInteger.Parse(p_textBox.Text);
            BigInteger q         = BigInteger.Parse(q_textBox.Text);
            BigInteger closedKey = BigInteger.Parse(closedKey_textBox.Text);
            BigInteger eulerFunc = Helper.CalcEulerFunc(p, q);
            BigInteger key       = Helper.CalcMultiplicativeInverseKey(eulerFunc, closedKey);

            ushort[] result = new ushort[message.Length];
            try
            {
                result = RSAEncryptor.Encrypt(message, key, p * q);
            }
            catch (ArithmeticException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            string resultText = "";

            foreach (var num in result)
            {
                resultText += num.ToString() + " ";
            }

            result_textBox.Text = resultText;
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllBytes(saveFileDialog.FileName, Helper.ToByteArray(result));
            }
        }
Exemple #7
0
 public IActionResult PublicKey(string algorithm)
 {
     return(algorithm.ToUpper() switch
     {
         "RSA" => Ok(RSAEncryptor.ExportPublicKey()),
         _ => NotFound()
     });
        private void DecryptFile()
        {
            byte[]     message = File.ReadAllBytes(file_textBox.Text);
            BigInteger key     = BigInteger.Parse(closedKey_textBox.Text);
            BigInteger r       = BigInteger.Parse(r_textBox.Text);

            byte[] result = new byte[message.Length / 2];
            try
            {
                result = RSAEncryptor.Decrypt(message, key, r);
            }
            catch (ArithmeticException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            string resultText = "";

            foreach (var num in result)
            {
                resultText += num.ToString() + " ";
            }

            result_textBox.Text = resultText;
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllBytes(saveFileDialog.FileName, result);
            }
        }
Exemple #9
0
        static void Main(string[] args)
        {
            RSAEncryptor rSA = new RSAEncryptor();

            Console.WriteLine("Escribe el string a cifrar");
            string text = Console.ReadLine();

            Console.WriteLine("Escribe la llave p");
            string p = Console.ReadLine();

            Console.WriteLine("Escribe la llave q");
            string q = Console.ReadLine();

            Console.WriteLine("Se ha guardado el string con éxito para cifrar");
            Console.WriteLine("El resultado del cifrado es el siguiente:");
            text = rSA.EncryptString(Convert.ToInt32(p), Convert.ToInt32(q), text);
            Console.WriteLine(text);
            Console.WriteLine("¿Desea descifrarlo? | Presione 'Y'. De lo contrario, presione cualquier otra tecla.");
            if (Console.ReadKey().Key == ConsoleKey.Y)
            {
                Console.Clear();
                Console.WriteLine("El resultado del descifrado es el siguiente:");
                Console.WriteLine(rSA.DecryptString(text));
                Console.ReadLine();
            }
            Console.WriteLine("Feliz día!");
            Console.ReadLine();
        }
Exemple #10
0
        private void buttonNetToJavaPri_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(this.textBoxNetKey.Text))
            {
                MessageBox.Show("请输入Net密钥");
                return;
            }

            this.textBoxJavakey.Text = RSAEncryptor.RSAPrivateKeyDotNet2Java(this.textBoxNetKey.Text);
        }
Exemple #11
0
        private void buttonJavaToNetPub_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(this.textBoxJavakey.Text))
            {
                MessageBox.Show("请输入Java密钥");
                return;
            }

            this.textBoxNetKey.Text = RSAEncryptor.RSAPublicKeyJava2DotNet(this.textBoxJavakey.Text);
        }
Exemple #12
0
        public void ThrowsIfMessageIsTooLongForSpecifiedKey(byte[] message, string pubKey)
        {
            // Arrange
            var keyParser = new PemRSAKeyParser();
            var target    = new RSAEncryptor();

            keyParser.TryParsePublic(pubKey, out RSAParameters publicKey);

            // Act/Assert
            var ex = Assert.ThrowsAny <CryptographicException>(() => target.Encrypt(message, publicKey));
        }
Exemple #13
0
        public void EncryptsAndDecryptsMessages(byte[] message, string pubKey, string privKey)
        {
            // Arrange
            var keyParser = new PemRSAKeyParser();
            var target    = new RSAEncryptor();

            keyParser.TryParsePublic(pubKey, out RSAParameters publicKey);
            keyParser.TryParsePrivate(privKey, out RSAParameters privateKey);

            // Act
            var encryptedMessage = target.Encrypt(message, publicKey);
            var decryptedMessage = target.Decrypt(encryptedMessage, privateKey);

            // Assert
            Assert.Equal(message, decryptedMessage);
        }
Exemple #14
0
        public static string DecryptFile(string keyPath, string filePath, string savingPath, string nombre)
        {
            var decryptor       = new RSAEncryptor();
            var decryptionsPath = $"{savingPath}/Decryptions";

            if (Directory.Exists(decryptionsPath))
            {
                if (File.Exists($"{decryptionsPath}/{nombre}.rsa"))
                {
                    File.Delete($"{decryptionsPath}/{nombre}.rsa");
                }
            }
            else
            {
                Directory.CreateDirectory(decryptionsPath);
            }
            return(decryptor.DecryptFile(keyPath, filePath, decryptionsPath, nombre));
        }
Exemple #15
0
        private void btnDecrypt_Click(object sender, EventArgs e)
        {
            IEncryptor cryptor = null;

            if (this.comboBox1.SelectedIndex == 0)
            {
                cryptor = new DESEncryptor(string.Empty);
            }
            else if (this.comboBox1.SelectedIndex == 1)
            {
                cryptor = new RSAEncryptor(null, null);
            }
            else if (this.comboBox1.SelectedIndex == 2)
            {
                cryptor = new HMACSHA256Encryptor(string.Empty);
            }

            this.txtDecrypt.Text = cryptor.Decrypt(this.txtEncrypt.Text);
        }
Exemple #16
0
 public IActionResult GenerateKeys(int p, int q)
 {
     try
     {
         var    encryptor = new RSAEncryptor(env.ContentRootPath);
         string path      = encryptor.GenerateKeys(p, q);
         if (path != "")
         {
             FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate);
             return(File(fileStream, "application/zip"));
         }
         else
         {
             return(StatusCode(500, "La llave no es valida"));
         }
     }
     catch
     {
         return(StatusCode(500));
     }
 }
        private ExecResult <TResult> ParseCenterResponse(string response)
        {
            var result = new ExecResult <TResult>();
            var view   = JsonConvert.DeserializeObject <ResponseView>(response);
            //解密
            string encryptkey = RSAEncryptor.decryptData(view.encryptkey, XmlConfig.ReapalPrivateKeyPfxUrl);
            var    data       = AESEncryptor.Decrypt(view.data, encryptkey);
            var    sData      = JsonConvert.DeserializeObject <BaseView>(data);

            if (sData.result_code == "0000")
            {
                result.Success = true;
            }
            else
            {
                result.MsgCode = sData.result_code;
                result.Message = sData.result_msg;
                result.Success = false;
            }
            return(result);
        }
        private IDictionary <string, string> PrepareRequest()
        {
            var    parameters = PrepareRequestCore();
            string json       = JsonConvert.SerializeObject(parameters);
            //加密业务数据--用AES对称加密算法
            string AESKey  = AESEncryptor.GenerateAESKey();
            string strData = AESEncryptor.Encrypt(json, AESKey);
            //加密AESKey--用RSA非对称加密算法
            string strKey     = RSAEncryptor.encryptData(AESKey, XmlConfig.ReapalPublicKeyCerUrl);
            string timestamps = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            //var dic = new Dictionary<string, object>();
            //dic.Add("merchant_id", ReapalMerchantId);
            //dic.Add("data", json);
            //dic.Add("encryptkey", strKey);
            //dic.Add("timestamp", timestamps);

            var dic = new Dictionary <string, object>();

            dic.Add("merchant_id", "100000000239166");
            dic.Add("data", "{\"cert_no\":\"412722199310223521\", \"face_id\":\"201709306319733661130403840\",\"cert_name\":\"孙晨杨\"}");
            dic.Add("encryptkey", "Cii0jhBrt2plxhT9r1Tl5YiG/Q++uNmBMGXROtfE39Tj3coIYKyybIHQm42NQv5wUN8ajexoAaeykzp+lNsX5dUavKr9Ch8gxpSJpX0+C6xrSHWF3EVxJ8Y/i9DP00/D4Bw+PoWs63JTmEcDiaqIZ5IU8LvGjygpaTnZ7+Ntn2d3OM3wYAZtnX+cHwDRYC7/kJi+Ezwf4UHJj8EKqa0+y8pACqh4k2x9StjF5AhhkWB5pPWlOXFljQcXhMeQgnPgwHVX1cGVFYSADeM7IAAmVVT6BWkGf+GWPIUdeiXrFk0l1qvenyH6UWgo/SXuLm85x+toV5XD9uaiADg4XDpN+A==");
            dic.Add("timestamp", "20170930112521148");


            IDictionary <string, string> dicCollection = new SortedDictionary <string, string>();

            dicCollection.Add("merchant_id", ReapalMerchantId);
            dicCollection.Add("data", strData);
            dicCollection.Add("encryptkey", strKey);
            dicCollection.Add("timestamp", timestamps);
            //dicCollection.Add("sign", Common.Sign(dic, XmlConfig.ReapalPrivateKeyPfxUrl));
            dicCollection.Add("sign", "123456");
            dicCollection.Add("sign_type", "RSA");
            return(dicCollection);
        }
Exemple #19
0
 public IActionResult Cipher([FromForm] IFormFile file, [FromForm] IFormFile key, string nombre)
 {
     try
     {
         if (key.FileName.Substring(key.FileName.LastIndexOf('.')) == ".key")
         {
             string path = env.ContentRootPath + "\\" + file.FileName;
             using var saver = new FileStream(path, FileMode.Create);
             file.CopyTo(saver);
             saver.Close();
             using var fileWritten = new FileStream(path, FileMode.OpenOrCreate);
             using var reader      = new BinaryReader(fileWritten);
             byte[] buffer = new byte[0];
             while (fileWritten.Position < fileWritten.Length)
             {
                 int index = buffer.Length;
                 Array.Resize <byte>(ref buffer, index + 100000);
                 byte[] aux = reader.ReadBytes(100000);
                 aux.CopyTo(buffer, index);
             }
             reader.Close();
             fileWritten.Close();
             for (int i = buffer.Length - 1; i >= 0; i--)
             {
                 if (buffer[i] != 0)
                 {
                     Array.Resize <byte>(ref buffer, i + 1);
                     break;
                 }
             }
             if (buffer.Length > 0)
             {
                 using var content = new MemoryStream();
                 key.CopyTo(content);
                 var text      = Encoding.ASCII.GetString(content.ToArray());
                 var encryptor = new RSAEncryptor(env.ContentRootPath);
                 path = encryptor.Cipher(buffer, new Key(text), nombre);
                 if (path != "")
                 {
                     FileStream fileStream = new FileStream(path, FileMode.OpenOrCreate);
                     return(File(fileStream, "text/plain"));
                 }
                 else
                 {
                     return(StatusCode(500, "La llave no es valida"));
                 }
             }
             else
             {
                 return(StatusCode(500, "El archivo está vacío"));
             }
         }
         else
         {
             return(StatusCode(500, "La llave no es un archivo .key"));
         }
     }
     catch
     {
         return(StatusCode(500));
     }
 }