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); } }
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); } }
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"); } }
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); }
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)); } }
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); } }
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(); }
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); }
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); }
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)); }
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); }
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)); }
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); }
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); }
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)); } }