, 6)). equals ("GIF89a")) {new UnableToDecodeException ("Input file has wrong GIF format");
}
// read palette size property from first three bits in the 10-th byte from the file [] b10 = Binary.toBitArray (bytes [10]); bsize = Binary.toByte (new byte [ ] {b10 [0], b10 [1], b10 [2]});
// calculate color count and possible message lengthbOrigColorCount = (int) Math.pow (2, bsize +1); possibleMessageLength = bOrigColorCount * 3/4; possibleTextLength = possibleMessageLength-2; // one byte for check and one byte for message lengthn = 13;
// read check sequence [] csBits = new byte [checkSequence.length]; (int i = 0; i <4; i + +) {[] ba = Binary.toBitArray (bytes [n ]); [2 * i] = ba [firstLSBit]; [2 * i +1] = ba [secondLSBit]; + +;
} cs = Binary.toByte (csBits); (cs! = Binary.toByte (checkSequence)) {new UnableToDecodeException ("There is no encrypted message in the image (Check sequence is incorrect)" ;);
}
// read text length [] cl = new byte [8]; (int i = 0; i <4; i + +) {[] ba = Binary.toBitArray (bytes [n]) ; [2 * i] = ba [firstLSBit]; [2 * i +1] = ba [secondLSBit]; + +;
} textLength = Binary.toByte (cl); (textLength <0) {new UnableToDecodeException ("Decoded text length is less than 0");
} (possibleTextLength
}
// read text bits and make text bytes [] bt = new byte [textLength]; (int i = 0; i
} [i] = Binary.toByte (bc);
} new String (bt);
}
Реалізація GIFEncryptorByPaletteExtensionMethod буде аналогічною, тільки відрізняється метод збереження/зчитування інформації.
У класі MainFrame описані методи-В«обгорткиВ»: encryptImage (Encryptor encryptor) і decryptImage (Encryptor encryptor), обробні результати методів інтерфейсу Encryptor і здійснюють взаємодію з користувачем, т.е відкривають діалог вибору файлів, показують повідомлення про помилки і т.д.; а також і інші методи: openImage (), що дає можливість користувачеві вибору зображення, exit (), який здійснює вихід з програми. Ці методи викликаються з Action'ов відповідних пунктів меню. У цьому класі додатково реалізовані допоміжні методи: createComponents () - створення компонентів форми, loadImageFile (File f) - Завантажити зображення до спеціальний компонент з файлу. Реалізація класу GIFEncryptorByPaletteEx...