コード例 #1
0
        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!");
        }
コード例 #2
0
ファイル: UnitTest1.cs プロジェクト: Leonelli/cryptography
        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"));
        }
コード例 #3
0
ファイル: UnitTest1.cs プロジェクト: Leonelli/cryptography
        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);
        }
コード例 #4
0
 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");
     }
 }
コード例 #5
0
        /// <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");
        }
コード例 #6
0
 public string Md5FileString(string fileName)
 {
     return(Crypto_Utils.HashMD5(File.ReadAllText(fileName)));
 }