Exemple #1
0
        public static bool Encrypt(string algorithm, string hashAlg, string filePath)
        {
            byte[] key = RandomKeyGenerator(SymetricEncDec.keyLenght[algorithm]);
            //get data
            byte[] dataForEncryption = ReadFile(filePath);
            byte[] dataEncrypted     = SymetricEncDec.Encrypt(dataForEncryption, algorithm, key);
            //get hash
            byte[] hash = HashAlg.Hash(dataForEncryption, hashAlg);
            hash = AsymmetricEncDec.SignData(hash, sender, hashAlg);

            WriteWithHeader(algorithm, hashAlg, key, hash.Length, dataEncrypted, hash, receiver.Folder + "\\" + sender.Username + new Random().Next(0, 100) + ".cs");

            return(true);
        }
Exemple #2
0
        public static string Decrypt(string filePath)
        {
            byte[] data;
            byte[] symetricAlg;
            byte[] key;
            byte[] hash;
            byte[] hashingAlg;
            int    hashLength;

            using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
            {
                try
                {
                    data = reader.ReadBytes((int)(new System.IO.FileInfo(filePath).Length));
                    data = ReadAndSkip(data, out symetricAlg);
                    data = ReadAndSkip(data, out hashingAlg);
                    data = ReadAndSkip(data, out key);
                }
                catch (Exception)
                {
                    MessageBox.Show("Decryption with your private key failed.");
                    return(null);
                }
                //get signed hash
                hashLength = BitConverter.ToInt32(data.Take(4).ToArray(), 0);
                data       = data.Skip(4).ToArray();
                hash       = data.Take(hashLength).ToArray();

                //get encrypted data
                data = data.Skip(hashLength).ToArray();
            }
            byte[] dataDecrypted = SymetricEncDec.Decrypt(data, Encoding.UTF8.GetString(symetricAlg), key);
            byte[] result        = HashAlg.Hash(dataDecrypted, Encoding.UTF8.GetString(hashingAlg));
            if (AsymmetricEncDec.VerifySignature(hash, sender, result, Encoding.UTF8.GetString(hashingAlg)) == false)
            {
                return(null);
            }
            string filePathOut = filePath.Remove(filePath.LastIndexOf('.')) + "Dec.cs";

            WriteToFile(filePathOut, dataDecrypted);
            return(filePathOut);
        }