public string DecodeFile(bool checkMD5, string fileName, string outDir, string key) { string f_inp = Path.GetFileName(fileName); string[] text = System.IO.File.ReadAllLines(fileName); string f_out = "", name = "", Hash = "", sFile = "", sMD5 = "", plantext = ""; if (Path.GetExtension(fileName) == ".acm") { if (text[0].Contains("ACM")) { name = text[1].Replace("File=", ""); f_out = outDir + "\\" + name; Hash = text[2].Replace("Hash=", ""); sFile = text[6]; plantext = Crypto_Utils.DecryptAES(sFile, key); sMD5 = Crypto_Utils.HashMD5(plantext); //cambio acm con testo in chiaro if (checkMD5) { if (sMD5 == Hash) { //MessageBox.Show("uguale"); } else { return("MD5 non corretto"); //MessageBox.Show("diverso"); } } if (name == "" || name == null) { return("Il file non è nel formato corretto o non può essere decriptato"); } else { StringBuilder sb = new StringBuilder(); sb.Append(plantext); if (File.Exists(f_out)) { //MessageBox.Show(f_out + " esiste"); File.WriteAllText(outDir + "\\" + "new_" + name, sb.ToString()); return("Percorso: " + f_out + "\n File " + name + " decriptato"); } else { File.WriteAllText(f_out, sb.ToString()); return("Percorso: " + f_out + "\n File " + name + " decriptato"); } } } return("Contenuto del file non corretto!"); } return("Estensione del file non corretta!"); }
public void Test_Base64() { string Text1 = "Man"; string Code1 = "TWFu"; Assert.AreEqual(Text1, Crypto_Utils.Base64_Decode(Code1)); Assert.AreEqual(Code1, Crypto_Utils.Base64_Encode(Text1)); string Text2 = "I.T.T. Marconi Rovereto"; string Code2 = "SS5ULlQuIE1hcmNvbmkgUm92ZXJldG8="; Assert.AreEqual(Text2, Crypto_Utils.Base64_Decode(Code2)); Assert.AreEqual(Code2, Crypto_Utils.Base64_Encode(Text2)); Assert.AreNotEqual(Code2, Crypto_Utils.Base64_Encode("ITT - Marconi Rovereto")); }
public void Test_RSA() { var pubKey_1 = "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; var priKey_1 = "<RSAKeyValue><Modulus>21wEnTU+mcD2w0Lfo1Gv4rtcSWsQJQTNa6gio05AOkV/Er9w3Y13Ddo5wGtjJ19402S71HUeN0vbKILLJdRSES5MHSdJPSVrOqdrll/vLXxDxWs/U0UT1c8u6k/Ogx9hTtZxYwoeYqdhDblof3E75d9n2F0Zvf6iTb4cI7j6fMs=</Modulus><Exponent>AQAB</Exponent><P>/aULPE6jd5IkwtWXmReyMUhmI/nfwfkQSyl7tsg2PKdpcxk4mpPZUdEQhHQLvE84w2DhTyYkPHCtq/mMKE3MHw==</P><Q>3WV46X9Arg2l9cxb67KVlNVXyCqc/w+LWt/tbhLJvV2xCF/0rWKPsBJ9MC6cquaqNPxWWEav8RAVbmmGrJt51Q==</Q><DP>8TuZFgBMpBoQcGUoS2goB4st6aVq1FcG0hVgHhUI0GMAfYFNPmbDV3cY2IBt8Oj/uYJYhyhlaj5YTqmGTYbATQ==</DP><DQ>FIoVbZQgrAUYIHWVEYi/187zFd7eMct/Yi7kGBImJStMATrluDAspGkStCWe4zwDDmdam1XzfKnBUzz3AYxrAQ==</DQ><InverseQ>QPU3Tmt8nznSgYZ+5jUo9E0SfjiTu435ihANiHqqjasaUNvOHKumqzuBZ8NRtkUhS6dsOEb8A2ODvy7KswUxyA==</InverseQ><D>cgoRoAUpSVfHMdYXW9nA3dfX75dIamZnwPtFHq80ttagbIe4ToYYCcyUz5NElhiNQSESgS5uCgNWqWXt5PnPu4XmCXx6utco1UVH8HGLahzbAnSy6Cj3iUIQ7Gj+9gQ7PkC434HTtHazmxVgIR5l56ZjoQ8yGNCPZnsdYEmhJWk=</D></RSAKeyValue>"; var testo__1 = "testing ..."; var testo__2 = "Hello World!"; var s1_enc = Crypto_Utils.EncryptRSA(testo__1, pubKey_1); var s1_dec = Crypto_Utils.DecryptRSA(s1_enc, priKey_1); Assert.AreEqual(s1_dec, testo__1); var s2_enc = Crypto_Utils.EncryptRSA(testo__2, pubKey_1); var s2_dec = Crypto_Utils.DecryptRSA(s2_enc, priKey_1); Assert.AreEqual(s2_dec, testo__2); }
public static void Decode(string[] args) { Console.WriteLine("Decode ... "); if (Check(args)) { // verifica parametri e decifrare string Keyfilename = File.ReadAllText(args[1]); string inputfilename = File.ReadAllText(args[2]); string RSA = Crypto_Utils.DecryptRSA(inputfilename, Keyfilename); Console.WriteLine(RSA); File.WriteAllText(args[3], RSA); Console.WriteLine("Decode completed "); } else { Console.WriteLine("Decode failed"); } }
/// <summary> /// Metodo per cifrare un file in formato ACM (Algoritmo Crittografico Marconi) /// </summary> /// <param name="fileName">Nome del file es: "c:\lavoro-temp\prova.txt"</param> /// <param name="outDir">Directory di output es: "c:\lavoro-temp"</param> /// <param name="key">Chiave simmetrica di cifratura</param> /// <returns>Log dell'azione o di ventuali errori</returns> public string EncodeFile(string fileName, string outDir, string key) { string f_inp = Path.GetFileName(fileName); string f_out = Path.ChangeExtension(outDir + "\\" + f_inp, "acm"); string sFile = File.ReadAllText(fileName); string sMD5 = Crypto_Utils.HashMD5(sFile); string sACM = Crypto_Utils.EncryptAES(sFile, key); StringBuilder sb = new StringBuilder(); sb.AppendLine("ACM"); sb.AppendLine("File=" + f_inp); sb.AppendLine("Hash=" + sMD5); sb.AppendLine("Size=" + sACM.Length); sb.AppendLine("Type=AES"); sb.AppendLine("@@@@@"); sb.Append(sACM); //MessageBox.Show(f_out); //MessageBox.Show(sb.ToString()); File.WriteAllText(f_out, sb.ToString()); return("Percorso: " + f_out + "\n File " + f_inp + " criptato"); }
public string Md5FileString(string fileName) { return(Crypto_Utils.HashMD5(File.ReadAllText(fileName))); }