Archief - XML bestand met referenties encrypteren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Forum

Legacy Member
Ik heb 1 XML-bestand met referenties in naar andere XML-bestanden, zodat het één grote structuur voorstelt verdeeld over verschillende XML-bestanden. Ik zou dit graag encrypteren. Hoe ga ik best te werk zijn hier bestaande oplossingen voor? Of moet ik elk bestand afzonderlijk encrypteren en voor te gebruiken elk bestand afzonderlijk decrypteren?

shadowstep0705

Legacy Member
Ik persoonlijk zou elk bestand afzonderlijk encrypteren/decrypteren met een rijndael sleutel, hierbij wordt een passwoord gebruikt. Onlangs maakte ik hiervoor nog (met behulp van 9lives :D) enkele functies:
Code:
private static byte[] Decrypt(byte[] cipher, string password)
        {
            try
            {
                RijndaelManaged rijndaelCipher = new RijndaelManaged();
                rijndaelCipher.Padding = PaddingMode.ISO10126;

                byte[] ciphertextByte = cipher;
                byte[] saltByte = Encoding.ASCII.GetBytes(password.Length.ToString());

                PasswordDeriveBytes secretKey = new PasswordDeriveBytes(password, saltByte);
                ICryptoTransform decryptor = rijndaelCipher.CreateDecryptor(secretKey.GetBytes(32), secretKey.GetBytes(16));
                MemoryStream memoryStream = new MemoryStream(ciphertextByte);
                CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);

                byte[] plainText = new byte[ciphertextByte.Length];

                int decryptedCount = cryptoStream.Read(plainText, 0, plainText.Length);

                memoryStream.Close();
                cryptoStream.Close();

                return plainText;
            }
            catch (Exception e)
            {
                throw new InvalidDataException("[" + e.ToString() + " : " + e.Message + "]  Data corrupt");
            }
        }
        private static byte[] Encrypt(byte[] input, string password)
        {
            RijndaelManaged rijndaelCipher = new RijndaelManaged();
            rijndaelCipher.Padding = PaddingMode.ISO10126;

            byte[] saltByte = Encoding.ASCII.GetBytes(password.Length.ToString());

            PasswordDeriveBytes secretKey = new PasswordDeriveBytes(password, saltByte);
            ICryptoTransform encryptor = rijndaelCipher.CreateEncryptor(secretKey.GetBytes(32), secretKey.GetBytes(16));
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);

            cryptoStream.Write(input, 0, input.Length);
            cryptoStream.FlushFinalBlock();

            byte[] cipherBytes = memoryStream.ToArray();

            memoryStream.Close();
            cryptoStream.Close();
            encryptor.Dispose();

            return cipherBytes;
        }
        
        public static void EncryptFile(string password, string fileName)
        {
            byte[] encryptedFile = Encrypt(File.ReadAllBytes(fileName), password);
            File.WriteAllBytes(fileName, encryptedFile);
        
        }

        public static void DecryptFile(string fileName, string password)
        {
            byte[] decryptedFile = Decrypt(File.ReadAllBytes(fileName), password);
            File.WriteAllBytes(fileName, decryptedFile);
        }

Gebruik de twee functies EncryptFile(string fileName, string password) en DecryptFile(string fileName, string password) :).

Voor het resultaat van zo'n encryptieprogramma: check dit
PS: zelf gemaakt :D
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan