เชชเชฐเชฟเชเชฏ
เชถเซเชญเซเชเซเชเชพเช.
เชฅเซเชกเชพ เชธเชฎเชฏ เชชเชนเซเชฒเชพ, เชเซเชฏเชพเชฐเซ เชนเซเช เชฏเซเชจเชฟเชตเชฐเซเชธเชฟเชเซเชฎเชพเช เช
เชญเซเชฏเชพเชธ เชเชฐเชคเซ เชนเชคเซ, เชคเซเชฏเชพเชฐเซ "เชฎเชพเชนเชฟเชคเซ เชธเซเชฐเชเซเชทเชพเชจเซ เชธเซเชซเซเชเชตเซเชฐ เชชเชฆเซเชงเชคเชฟเช" เชถเชฟเชธเซเชคเชฎเชพเช เช
เชญเซเชฏเชพเชธเชเซเชฐเชฎ เชนเชคเซ. เช
เชธเชพเชเชจเชฎเซเชจเซเช เชฎเชพเชเซ เช
เชฎเชจเซ เชเช เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชนเชคเซ เชเซ GIF เชซเชพเชเชฒเซเชฎเชพเช เชธเชเชฆเซเชถเชจเซ เชเชฎเซเชฌเซเชก เชเชฐเซ. เชฎเซเช เชคเซเชจเซ เชเชพเชตเชพเชฎเชพเช เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช.
เช เชฒเซเชเชฎเชพเช เชนเซเช เชเซเชเชฒเชพเช เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชฎเซเชฆเซเชฆเชพเชเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเชถ, เชคเซเชฎเช เช เชจเชพเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเซเชตเซ เชฐเซเชคเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ.
เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชญเชพเช
GIF เชซเซเชฐเซเชฎเซเช
GIF (เชเซเชฐเชพเชซเชฟเชเซเชธ เชเชจเซเชเชฐเชเซเชจเซเช เชซเซเชฐเซเชฎเซเช - เชเชฌเซเชเชจเซ เชเชชเชฒเซ เชฎเชพเชเซเชจเซเช เชเช เชซเซเชฐเซเชฎเซเช) เช เชเซเชฐเชพเชซเชฟเช เชเชฌเซเชเชจเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซเชจเซเช เชเช เชซเซเชฐเซเชฎเซเช เชเซ, เชเซ 256 เชฐเชเชเซ เชธเซเชงเซเชจเชพ เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชเซเชฃเชตเชคเซเชคเชพเชจเซ เชเซเช เชตเชฟเชจเชพ เชธเชเชเซเชเชฟเชค เชกเซเชเชพเชจเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชเซ. เช เชซเซเชฐเซเชฎเซเช 1987 (GIF87a) เชฎเชพเช CompuServe เชฆเซเชตเชพเชฐเชพ เชจเซเชเชตเชฐเซเชเซเชธ เชชเชฐ เชฐเชพเชธเซเชเชฐ เชเชฎเซเชเซเชธ เชเซเชฐเชพเชจเซเชธเชฎเชฟเช เชเชฐเชตเชพ เชฎเชพเชเซ เชตเชฟเชเชธเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช. 1989 เชฎเชพเช, เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชซเซเชฐเชซเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ (GIF89a), เชชเชพเชฐเชฆเชฐเซเชถเชฟเชคเชพ เช เชจเซ เชเชจเชฟเชฎเซเชถเชจ เชฎเชพเชเซ เชธเชฎเชฐเซเชฅเชจ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช.
GIF เชซเชพเชเชฒเซเชฎเชพเช เชฌเซเชฒเซเช เชฎเชพเชณเชเซเช เชนเซเชฏ เชเซ. เช เชฌเซเชฒเซเชเซเชธเชจเซ เชนเชเชฎเซเชถเชพ เชจเชฟเชถเซเชเชฟเชค เชฒเชเชฌเชพเช เชนเซเชฏ เชเซ (เช เชฅเชตเชพ เชคเซ เชเซเชเชฒเชพเช เชซเซเชฒเซเชเซเชธ เชชเชฐ เชเชงเชพเชฐ เชฐเชพเชเซ เชเซ), เชคเซเชฅเซ เชฆเชฐเซเช เชฌเซเชฒเซเช เชเซเชฏเชพเช เชธเซเชฅเชฟเชค เชเซ เชคเซ เชตเชฟเชถเซ เชญเซเชฒ เชเชฐเชตเซ เชฒเชเชญเช เช เชถเชเซเชฏ เชเซ. GIF89a เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชธเซเชฅเซ เชธเชฐเชณ เชฌเชฟเชจ-เชเชจเชฟเชฎเซเชเซเชก GIF เชเชฌเซเชจเซเช เชฎเชพเชณเชเซเช:
เชฌเชเชงเชพเชฐเชฃเชจเชพ เชคเชฎเชพเชฎ เชฌเซเชฒเซเชเซเชธเชฎเชพเชเชฅเซ, เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช
เชฎเชจเซ เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเช เชฌเซเชฒเซเช เช
เชจเซ เชชเซเชฒเซเช เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชชเชฐเชฟเชฎเชพเชฃเซเชฎเชพเช เชฐเชธ เชนเชถเซ:
CT
- เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเชเชจเซ เชนเชพเชเชฐเซ. เชเซ เช เชงเซเชตเช เชธเซเช เชเชฐเซเชฒ เชนเซเชฏ, เชคเซ เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเช เชฒเซเชเชฟเชเชฒ เชธเซเชเซเชฐเซเชจ เชนเซเชจเซเชกเชฒ เชชเชเซ เชคเชฐเชค เช เชถเชฐเซ เชฅเชตเซ เชเซเชเช.Size
- เชเชฟเชคเซเชฐเชฎเชพเช เชชเซเชฒเซเชเชจเซเช เชเชฆ เช เชจเซ เชฐเชเชเซเชจเซ เชธเชเชเซเชฏเชพ. เช เชชเชฐเชฟเชฎเชพเชฃ เชฎเชพเชเซเชจเชพ เชฎเซเชฒเซเชฏเซ:
เชฎเชพเชช
เชฐเชเชเซเชจเซ เชธเชเชเซเชฏเชพ
เชชเซเชฒเซเชเชจเซเช เชเชฆ, เชฌเชพเชเชเซเชธ
7
256
768
6
128
384
5
64
192
4
32
96
3
16
48
2
8
24
1
4
12
0
2
6
เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจ เชชเชฆเซเชงเชคเชฟเช
เชเชฎเซเช เชซเชพเชเชฒเซเชฎเชพเช เชธเชเชฆเซเชถเชพเชจเซ เชเชจเซเชเซเชฐเชฟเชชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชจเซเชเซเชจเซ เชชเชฆเซเชงเชคเชฟเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ:
- LSB (เชเชเชพเชฎเชพเช เชเชเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฌเชฟเช) เชชเชฆเซเชงเชคเชฟ
- เชชเซเชฒเซเช เชเชฎเซเชฐเชตเชพเชจเซ เชชเชฆเซเชงเชคเชฟ
LSB เชชเชฆเซเชงเชคเชฟ - เชธเซเชเซเชเชจเซเชเซเชฐเชพเชซเซเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชชเชฆเซเชงเชคเชฟ. เชคเซเชฎเชพเช เชเชจเซเชเซเชจเชฐเชฎเชพเชเชจเชพ เชเซเชฒเซเชฒเชพ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฌเชฟเชเซเชธ (เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเช เชฌเชพเชเชเซเชธ) เชจเซ เชเซเชชเชพเชฏเซเชฒเชพ เชธเชเชฆเซเชถเชจเชพ เชฌเชฟเชเซเชธ เชธเชพเชฅเซ เชฌเชฆเชฒเชตเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
เชชเซเชฐเซเชเซเชฐเชพเชฎ เช เชชเชฆเซเชงเชคเชฟเชจเชพ เชญเชพเช เชฐเซเชชเซ เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเช เชฌเชพเชเชเซเชธเชฎเชพเช เชเซเชฒเซเชฒเชพ เชฌเซ เชฌเชฟเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชถเซ. เชเชจเซ เช เชฐเซเชฅ เช เชเซ เชเซ 24-เชฌเซเช เชเชฎเซเช เชฎเชพเชเซ, เชเซเชฏเชพเช เชฐเชเช เชชเซ เชฒเซเช เชฒเชพเชฒ, เชตเชพเชฆเชณเซ เช เชจเซ เชฒเซเชฒเชพ เชฎเชพเชเซ เชคเซเชฐเชฃ เชฌเชพเชเชเซเชธ เชเซ, เชคเซเชฎเชพเช เชธเชเชฆเซเชถ เชเชฎเซเชฌเซเชก เชเชฐเซเชฏเชพ เชชเชเซ, เชฆเชฐเซเช เชฐเชเช เชเชเช เชฎเชนเชคเซเชคเชฎ 3/255 เชเซเชฐเซเชกเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชฌเชฆเชฒเชพเชถเซ. เชเชตเซ เชซเซเชฐเชซเชพเชฐ, เชธเซเชชเซเชฐเชฅเชฎ, เชฎเชพเชจเชต เชเชเช เชฎเชพเชเซ เช เชฆเซเชฐเชถเซเชฏ เช เชฅเชตเชพ เช เชเชฐเซ เชนเชถเซ, เช เชจเซ เชฌเซเชเซเช, เชคเซ เชเชเซ-เชเซเชฃเชตเชคเซเชคเชพเชตเชพเชณเชพ เชฎเชพเชนเชฟเชคเซ เชเชเชเชชเซเช เชเชชเชเชฐเชฃเซ เชชเชฐ เชฆเซเชเชพเชถเซ เชจเชนเซเช.
เชฎเชพเชนเชฟเชคเซเชจเซ เชเชฅเซเชฅเซ เชเชฎเซเช เชชเซเชฒเซเชเชจเชพ เชเชฆ เชชเชฐ เชธเซเชงเซ เชเชงเชพเชฐ เชฐเชพเชเชถเซ. เชชเซเชฒเซเชเชจเซเช เชฎเชนเชคเซเชคเชฎ เชเชฆ 256 เชฐเชเชเซเชจเซเช เชนเซเชตเชพเชฅเซ, เช เชจเซ เชเซ เชฆเชฐเซเช เชฐเชเชเชจเชพ เชเชเชเชฎเชพเช เชฌเซ เชธเชเชฆเซเชถ เชฌเชฟเชเซเชธ เชฒเชเชตเชพเชฎเชพเช เชเชตเซ, เชคเซ เชฎเชนเชคเซเชคเชฎ เชธเชเชฆเซเชถ เชฒเชเชฌเชพเช (เชเชฎเซเชเชฎเชพเช เชฎเชนเชคเซเชคเชฎ เชชเซเชฒเซเช เชธเชพเชฅเซ) 192 เชฌเชพเชเชเซเชธ เชเซ. เชเชเชตเชพเชฐ เชฎเซเชธเซเช เชเชฎเซเชเชฎเชพเช เชเชฎเซเชฌเซเชก เชฅเช เชเชพเชฏ เชชเชเซ, เชซเชพเชเชฒเชจเซเช เชเชฆ เชฌเชฆเชฒเชพเชคเซเช เชจเชฅเซ.
เชชเซเชฒเซเช เชตเชฟเชธเซเชคเชฐเชฃ เชชเชฆเซเชงเชคเชฟ, เชเซ เชฎเชพเชคเซเชฐ GIF เชธเซเชเซเชฐเชเซเชเชฐ เชฎเชพเชเซ เชเชพเชฎ เชเชฐเซ เชเซ. เชคเซ เชจเชพเชจเชพ เชชเซเชฒเซเช เชธเชพเชฅเซเชจเซ เชเชฌเซเช เชชเชฐ เชธเซเชฅเซ เช เชธเชฐเชเชพเชฐเช เชฐเชนเซเชถเซ. เชคเซเชจเซ เชธเชพเชฐ เช เชเซ เชเซ เชคเซ เชชเซเชฒเซเชเชจเชพ เชเชฆเชฎเชพเช เชตเชงเชพเชฐเซ เชเชฐเซ เชเซ, เชเซเชจเชพเชฅเซ เชเชฒเชฐ เชฌเชพเชเชเชจเซ เชเชเซเชฏเชพเช เชเชฐเซเชฐเซ เชฌเชพเชเช เชฒเชเชตเชพ เชฎเชพเชเซ เชตเชงเชพเชฐเชพเชจเซ เชเชเซเชฏเชพ เชฎเชณเซ เชเซ. เชเซ เชเชชเชฃเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเชเช เชเซ เชชเซเชฒเซเชเชจเซเช เชฒเชเซเชคเซเชคเชฎ เชเชฆ 2 เชฐเชเชเซ (6 เชฌเชพเชเชเซเชธ) เชเซ, เชคเซ เชเชฎเซเชฌเซเชกเซเชก เชธเชเชฆเซเชถเชจเซเช เชฎเชนเชคเซเชคเชฎ เชเชฆ 256 ร 3โ6 = 762 เชฌเชพเชเชเซเชธ เชนเซเช เชถเชเซ เชเซ. เชเซเชฐเชฒเชพเชญ เช เชเชเซ เชเซเชฐเชฟเชชเซเชเซเชเซเชฐเชพเชซเชฟเช เชธเซเชฐเชเซเชทเชพ เชเซ; เชเชฎเซเชฌเซเชกเซเชก เชธเชเชฆเซเชถ เชเซเชเชชเชฃ เชเซเชเซเชธเซเช เชเชกเชฟเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเชพเชเชเซ เชถเชเชพเชฏ เชเซ เชเซ เชธเชเชฆเซเชถ เชตเชงเชพเชฐเชพเชจเชพ เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจเชจเซ เชเชงเชฟเชจ เชจ เชนเซเชฏ.
เชตเซเชฏเชตเชนเชพเชฐเซ เชญเชพเช
เชชเซเชฐเซเชเซเชฐเชพเชฎ เชกเชฟเชเชพเชเชจ
เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจ เช
เชจเซ เชกเชฟเชเซเชฐเชฟเชชเซเชถเชจ เช
เชฒเซเชเซเชฐเชฟเชงเชฎเซเชธเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃ เชฎเชพเชเซเชจเชพ เชคเชฎเชพเชฎ เชเชฐเซเชฐเซ เชธเชพเชงเชจเซ เชชเซเชเซเชเชฎเชพเช เชถเชพเชฎเซเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. com.tsarik.steganography
. เช เชชเซเชเซเชเชฎเชพเช เชเชจเซเชเชฐเชซเซเชธเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ Encryptor
เชชเชฆเซเชงเชคเชฟเช เชธเชพเชฅเซ encrypt
ะธ decrypt
, เชตเชฐเซเช Binary
, เชเซ เชฌเซเช เชเชฐเซ, เชคเซเชฎเช เช
เชชเชตเชพเชฆ เชตเชฐเซเชเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ UnableToEncryptException
ะธ UnableToDecryptException
, เชเซเชจเซ เชเชชเชฏเซเช เชเชจเซเชเชฐเชซเซเชธ เชชเชฆเซเชงเชคเชฟเชเชฎเชพเช เชฅเชตเซ เชเซเชเช Encryptor
เช
เชจเซเชเซเชฐเชฎเซ เชเชจเซเชเซเชกเชฟเชเช เช
เชจเซ เชกเซเชเซเชกเชฟเชเช เชญเซเชฒเซเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช.
เชฎเซเชเซเชฏ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชชเซเชเซเช com.tsarik.programs.gifed
เชธเซเชฅเชฟเชฐ เชชเชฆเซเชงเชคเชฟ เชธเชพเชฅเซ เชเชฒเชพเชตเซ เชถเชเชพเชฏ เชคเซเชตเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเซเชฒเชพเชธเชจเซ เชธเชฎเชพเชตเซเชถ เชเชฐเชถเซ main
, เชคเชฎเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ; เชเช เชตเชฐเซเช เชเซ เชเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชชเชฐเชฟเชฎเชพเชฃเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ; เช
เชจเซ เช
เชจเซเชฏ เชตเชฐเซเชเซ เชธเชพเชฅเซเชจเชพ เชชเซเชเซเชเซ.
เชเชฒเซเชเซเชฐเชฟเชงเชฎเซเชธเชจเซเช เช
เชฎเชฒเซเชเชฐเชฃ เชชเซเชเซเชเชฎเชพเช เชฐเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ com.tsarik.programs.gifed.gif
เชตเชฐเซเชเซ GIFEncryptorByLSBMethod
ะธ GIFEncryptorByPaletteExtensionMethod
. เช เชฌเชเชจเซ เชตเชฐเซเชเซ เชเชจเซเชเชฐเชซเซเชธเชจเซ เช
เชฎเชฒ เชเชฐเชถเซ Encryptor
.
GIF เชซเซเชฐเซเชฎเซเชเชจเซ เชฐเชเชจเชพเชจเชพ เชเชงเชพเชฐเซ, เชคเชฎเซ เชเชฎเซเช เชชเซเชฒเซเชเชฎเชพเช เชธเชเชฆเซเชถ เชฐเชเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชพเชฎเชพเชจเซเชฏ เช เชฒเซเชเซเชฐเชฟเชงเชฎ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ:
เชเชฎเซเชเชฎเชพเช เชธเชเชฆเซเชถเชจเซ เชนเชพเชเชฐเซ เชจเชเซเชเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชธเชเชฆเซเชถเชจเซ เชถเชฐเซเชเชคเชฎเชพเช เชฌเชฟเชเซเชธเชจเซ เชเซเชเซเชเชธ เชเซเชฐเชฎ เชเชฎเซเชฐเชตเซ เชเชฐเซเชฐเซ เชเซ, เชเซ เชกเซเชเซเชกเชฐ เชชเชนเซเชฒเชพ เชตเชพเชเชเซ เชเซ เช
เชจเซ เชถเซเชฆเซเชงเชคเชพ เชฎเชพเชเซ เชคเชชเชพเชธเซ เชเซ. เชเซ เชคเซ เชฎเซเชณ เชเชพเชคเซเช เชจเชฅเซ, เชคเซ เชเชตเซเช เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซ เชเชฌเซเชฎเชพเช เชเซเช เชเซเชชเชพเชฏเซเชฒ เชธเชเชฆเซเชถ เชจเชฅเซ. เชเชเชณ เชคเชฎเชพเชฐเซ เชธเชเชฆเซเชถเชจเซ เชฒเชเชฌเชพเชเชจเซ เชเชฒเซเชฒเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชชเชเซ เชฎเซเชธเซเชเชจเซ เช เชเซเชเซเชธเซเช.
เชธเชฎเชเซเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชตเชฐเซเช เชเชเซเชคเชฟ:
เชเชพเชฐเซเชฏเชเซเชฐเชฎเชจเซเช เช เชฎเชฒเซเชเชฐเชฃ
เชธเชฎเชเซเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเชพ เช
เชฎเชฒเซเชเชฐเชฃเชจเซ เชฌเซ เชเชเชเซเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ: เชเชจเซเชเชฐเชซเซเชธ เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจ เช
เชจเซ เชกเชฟเชเซเชฐเชฟเชชเซเชถเชจ เชชเชฆเซเชงเชคเชฟเชเชจเซ เช
เชฎเชฒ Encryptor
, เชตเชฐเซเชเซเชฎเชพเช GIFEncryptorByLSBMethod
ะธ GIFEncryptorByPaletteExtensionMethod
, เช
เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชจเซเชเชฐเชซเซเชธเชจเซ เช
เชฎเชฒ.
เชตเชฐเซเชเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ GIFEncryptorByLSBMethod
.
เชเซเชทเซเชคเซเชฐเซ firstLSBit
ะธ secondLSBit
เชเชฎเซเชเชจเชพ เชชเซเชฐเชคเซเชฏเซเช เชฌเชพเชเชเชจเชพ เชฌเชฟเชเซเชธเชจเซ เชธเชเชเซเชฏเชพ เชถเชพเชฎเซเชฒ เชเซ เชเซเชฎเชพเช เชธเชเชฆเซเชถ เชฆเชพเชเชฒ เชเชฐเชตเซ เชเซเชเช เช
เชจเซ เชเซเชฏเชพเชเชฅเซ เชธเชเชฆเซเชถ เชตเชพเชเชเชตเซ เชเซเชเช. เชเซเชทเซเชคเซเชฐ checkSequence
เชเชฎเซเชฌเซเชกเซเชก เชธเชเชฆเซเชถเชจเซ เชเชณเชเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเช เชฌเซเช เชเซเชฐเชฎ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชเซ. เชธเซเชฅเชฟเชฐ เชชเชฆเซเชงเชคเชฟ getEncryptingFileParameters
เชเชฒเซเชฒเซเชเชฟเชค เชซเชพเชเชฒเชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ เช
เชจเซ เชธเชเชญเชตเชฟเชค เชธเชเชฆเซเชถเชพเชจเซ เชฒเชพเชเซเชทเชฃเชฟเชเชคเชพเช เชชเชฐเชค เชเชฐเซ เชเซ.
เชชเชฆเซเชงเชคเชฟ เช
เชฒเซเชเซเชฐเชฟเชงเชฎเชจเซ encrypt
เชตเชฐเซเช GIFEncryptorByLSBMethod
:
เช
เชจเซ เชคเซเชจเซ เชเซเชก:
@Override
public void encrypt(File in, File out, String text) throws UnableToEncodeException, NullPointerException, IOException {
if (in == null) {
throw new NullPointerException("Input file is null");
}
if (out == null) {
throw new NullPointerException("Output file is null");
}
if (text == null) {
throw new NullPointerException("Text is null");
}
// read bytes from input file
byte[] bytes = new byte[(int)in.length()];
InputStream is = new FileInputStream(in);
is.read(bytes);
is.close();
// check format
if (!(new String(bytes, 0, 6)).equals("GIF89a")) {
throw new UnableToEncodeException("Input file has wrong GIF format");
}
// read palette size property from first three bits in the 10-th byte from the file
byte[] b10 = Binary.toBitArray(bytes[10]);
byte bsize = Binary.toByte(new byte[] {b10[0], b10[1], b10[2]});
// calculate color count and possible message length
int bOrigColorCount = (int)Math.pow(2, bsize+1);
int possibleMessageLength = bOrigColorCount*3/4;
int possibleTextLength = possibleMessageLength-2;// one byte for check and one byte for message length
if (possibleTextLength < text.length()) {
throw new UnableToEncodeException("Text is too big");
}
int n = 13;
// write check sequence
for (int i = 0; i < checkSequence.length/2; i++) {
byte[] ba = Binary.toBitArray(bytes[n]);
ba[firstLSBit] = checkSequence[2*i];
ba[secondLSBit] = checkSequence[2*i+1];
bytes[n] = Binary.toByte(ba);
n++;
}
// write text length
byte[] cl = Binary.toBitArray((byte)text.length());
for (int i = 0; i < cl.length/2; i++) {
byte[] ba = Binary.toBitArray(bytes[n]);
ba[firstLSBit] = cl[2*i];
ba[secondLSBit] = cl[2*i+1];
bytes[n] = Binary.toByte(ba);
n++;
}
// write message
byte[] textBytes = text.getBytes();
for (int i = 0; i < textBytes.length; i++) {
byte[] c = Binary.toBitArray(textBytes[i]);
for (int ci = 0; ci < c.length/2; ci++) {
byte[] ba = Binary.toBitArray(bytes[n]);
ba[firstLSBit] = c[2*ci];
ba[secondLSBit] = c[2*ci+1];
bytes[n] = Binary.toByte(ba);
n++;
}
}
// write output file
OutputStream os = new FileOutputStream(out);
os.write(bytes);
os.close();
}
เชชเชฆเซเชงเชคเชฟเชจเซ เช
เชฒเซเชเซเชฐเชฟเชงเชฎ เช
เชจเซ เชธเซเชคเซเชฐเซเชค เชเซเชก decrypt
เชตเชฐเซเช GIFEncryptorByLSBMethod
:
@Override
public String decrypt(File in) throws UnableToDecodeException, NullPointerException, IOException {
if (in == null) {
throw new NullPointerException("Input file is null");
}
// read bytes from input file
byte[] bytes = new byte[(int)in.length()];
InputStream is = new FileInputStream(in);
is.read(bytes);
is.close();
// check format
if (!(new String(bytes, 0, 6)).equals("GIF89a")) {
throw new UnableToDecodeException("Input file has wrong GIF format");
}
// read palette size property from first three bits in the 10-th byte from the file
byte[] b10 = Binary.toBitArray(bytes[10]);
byte bsize = Binary.toByte(new byte[] {b10[0], b10[1], b10[2]});
// calculate color count and possible message length
int bOrigColorCount = (int)Math.pow(2, bsize+1);
int possibleMessageLength = bOrigColorCount*3/4;
int possibleTextLength = possibleMessageLength-2; // one byte for check and one byte for message length
int n = 13;
// read check sequence
byte[] csBits = new byte[checkSequence.length];
for (int i = 0; i < 4; i++) {
byte[] ba = Binary.toBitArray(bytes[n]);
csBits[2*i] = ba[firstLSBit];
csBits[2*i+1] = ba[secondLSBit];
n++;
}
byte cs = Binary.toByte(csBits);
if (cs != Binary.toByte(checkSequence)) {
throw new UnableToDecodeException("There is no encrypted message in the image (Check sequence is incorrect)");
}
// read text length
byte[] cl = new byte[8];
for (int i = 0; i < 4; i++) {
byte[] ba = Binary.toBitArray(bytes[n]);
cl[2*i] = ba[firstLSBit];
cl[2*i+1] = ba[secondLSBit];
n++;
}
byte textLength = Binary.toByte(cl);
if (textLength < 0) {
throw new UnableToDecodeException("Decoded text length is less than 0");
}
if (possibleTextLength < textLength) {
throw new UnableToDecodeException("There is no messages (Decoded message length (" + textLength + ") is less than Possible message length (" + possibleTextLength + "))");
}
// read text bits and make text bytes
byte[] bt = new byte[textLength];
for (int i = 0; i < bt.length; i++) {
byte[] bc = new byte[8];
for (int bci = 0; bci < bc.length/2; bci++) {
byte[] ba = Binary.toBitArray(bytes[n]);
bc[2*bci] = ba[firstLSBit];
bc[2*bci+1] = ba[secondLSBit];
n++;
}
bt[i] = Binary.toByte(bc);
}
return new String(bt);
}
เชตเชฐเซเชเชจเซเช เช
เชฎเชฒเซเชเชฐเชฃ GIFEncryptorByPaletteExtensionMethod
เชธเชฎเชพเชจ เชนเชถเซ, เชฎเชพเชคเซเชฐ เชฎเชพเชนเชฟเชคเซ เชธเชพเชเชตเชตเชพเชจเซ/เชตเชพเชเชเชตเชพเชจเซ เชชเชฆเซเชงเชคเชฟ เช
เชฒเช เชเซ.
เชตเชฐเซเช เชฎเชพเช MainFrame
เชฐเซเชชเชฐ เชชเชฆเซเชงเชคเชฟเช เชตเชฐเซเชฃเชตเซเชฒ เชเซ: encryptImage(Encryptor encryptor)
ะธ decryptImage(Encryptor encryptor)
, เชเชจเซเชเชฐเชซเซเชธ เชชเชฆเซเชงเชคเชฟเชเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ Encryptor
เช
เชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชธเชพเชฅเซ เชเซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเซ, เชเชเชฒเซ เชเซ เชซเชพเชเชฒ เชชเชธเชเชฆเชเซ เชธเชเชตเชพเชฆ เชเซเชฒเชตเซ, เชญเซเชฒ เชธเชเชฆเซเชถเชพเช เชฆเชฐเซเชถเชพเชตเชตเซ, เชตเชเซเชฐเซ; เชคเซเชฎเช เช
เชจเซเชฏ เชชเชฆเซเชงเชคเชฟเช: openImage()
, เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชเช เชเชฌเซ เชชเชธเชเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ, exit()
, เชเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเชเชฅเซ เชฌเชนเชพเชฐ เชจเซเชเชณเซ เชเซ. เช เชชเชฆเซเชงเชคเชฟเช เชฎเชพเชเชฅเซ เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ Action
เชจเซ เช
เชจเซเชฐเซเชช เชฎเซเชจเซ เชตเชธเซเชคเซเช. เช เชตเชฐเซเช เชตเชงเชพเชฐเชพเชฎเชพเช เชธเชนเชพเชฏเช เชชเชฆเซเชงเชคเชฟเชเชจเซ เช
เชฎเชฒ เชเชฐเซ เชเซ: createComponents()
- เชซเซเชฐเซเชฎ เชเชเชเซเชจเซ เชฐเชเชจเชพ, loadImageFile(File f)
โ เชซเชพเชเชฒเชฎเชพเชเชฅเซ เชธเซเชชเซเชถเชฟเชฏเชฒ เชเชฎเซเชชเซเชจเชจเซเชเชฎเชพเช เชเชฎเซเช เชฒเซเชก เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ. เชตเชฐเซเชเชจเซเช เช
เชฎเชฒเซเชเชฐเชฃ GIFEncryptorByPaletteExtensionMethod
เชตเชฐเซเช เช
เชฎเชฒเซเชเชฐเชฃ เชธเชฎเชพเชจ GIFEncryptorByLSBMethod
, เชฎเซเชเซเชฏ เชคเชซเชพเชตเชค เชชเซเชฒเซเชเชฎเชพเชเชฅเซ เชธเชเชฆเซเชถ เชฌเชพเชเช เชฒเชเชตเชพเชฎเชพเช เช
เชจเซ เชตเชพเชเชเชตเชพเชจเซ เชฐเซเชคเชฎเชพเช เชเซ.
เชเชพเชฐเซเชฏเชเซเชฐเชฎ เชเชพเชฎเชเซเชฐเซ
เชเชฒเชฌเซเชเชธ เชชเชฆเซเชงเชคเชฟ
เชเชพเชฒเซ เชเชนเซเช เชเซ เชเชจเชพ เชเซเชตเซ เชเช เชเชฌเซ เชเซ:
เช เชเชฎเซเชเชฎเชพเช, เชชเซเชฒเซเชเชฎเชพเช 256 เชฐเชเชเซเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ (เชเซเชฎ เชชเซเชเชจเซเช เชธเซเชต เชเชฐเซ เชเซ). เชชเซเชฐเชฅเชฎ เชเชพเชฐ เชฐเชเชเซ เชเซ: เชธเชซเซเชฆ, เชเชพเชณเซ, เชฒเชพเชฒ, เชฒเซเชฒเซ. เช
เชจเซเชฏ เชฐเชเชเซ เชเชพเชณเชพ เชเซ. เชตเซเชถเซเชตเชฟเช เชชเซเชฒเซเช เชฌเซเช เชเซเชฐเชฎ เชจเซเชเซ เชฎเซเชเชฌ เชนเชถเซ:
11111111 11111111 11111111 00000000 00000000 00000000 11111111 00000000 00000000 00000000 11111111 00000000...
เชเชเชตเชพเชฐ เชธเชเชฆเซเชถ เชเชฎเซเชฌเซเชก เชฅเช เชเชพเชฏ, เชชเชเซ เชฐเซเชเชพเชเชเชฟเชค เชฌเชฟเชเซเชธ เชธเชเชฆเซเชถเชจเชพ เชฌเชฟเชเซเชธ เชธเชพเชฅเซ เชฌเชฆเชฒเชตเชพเชฎเชพเช เชเชตเชถเซ. เชชเชฐเชฟเชฃเชพเชฎเซ เชเชฌเซ เชฒเชเชญเช เชฎเซเชณเชฅเซ เช
เชฒเช เชจเชฅเซ.
เชฎเซเชณ
เชเชฎเซเชฌเซเชกเซเชก เชธเชเชฆเซเชถ เชธเชพเชฅเซเชจเซ เชเชฌเซ
เชชเซเชฒเซเช เชตเชฟเชธเซเชคเชฐเชฃ เชชเชฆเซเชงเชคเชฟ
เชเซเชฏเชพเชฐเซ เชคเชฎเซ เช เชชเชฆเซเชงเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชเชฆเซเชถ เชงเชฐเชพเชตเชคเซ เชเชฌเซ เชเซเชฒเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเชฎเชจเซ เชจเซเชเซเชจเซเช เชเชฟเชคเซเชฐ เชฆเซเชเชพเชถเซ:
เชคเซ เชธเซเชชเชทเซเช เชเซ เชเซ เช เชชเชฆเซเชงเชคเชฟ เชธเชเชชเซเชฐเซเชฃ เชเชพเชธเซเชธเซ เชชเซเชฐเชตเซเชคเซเชคเชฟเช เชฎเชพเชเซ เชเชพเชฎ เชเชฐเชถเซ เชจเชนเซเช, เช
เชจเซ เชธเชเชฆเซเชถเชจเชพ เชตเชงเชพเชฐเชพเชจเชพ เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจเชจเซ เชเชฐเซเชฐ เชชเชกเซ เชถเชเซ เชเซ.
เชเชจเชฟเชฎเซเชเซเชก เชเชฎเซเชเซเชธเชฎเชพเช เชเชจเซเชเซเชฐเชฟเชชเซเชถเชจ/เชกเชฟเชเซเชฐเชฟเชชเซเชถเชจ เชฐเซเชเซเชฏเซเชฒเชฐ เชธเซเชเซเชเชฟเช เชเชฎเซเชเซเชธเชจเซ เชเซเชฎ เช เชเชพเชฎ เชเชฐเซ เชเซ, เชชเชฐเชเชคเซ เชเชจเชฟเชฎเซเชถเชจ เชคเซเชเซ เชเชฏเซเช เชจเชฅเซ.
เชตเชชเชฐเชพเชฏเซเชฒ เชธเซเชคเซเชฐเซเชคเซ:
http://ru.wikipedia.org/wiki/Gif http://ru.wikipedia.org/wiki/ะกัะตะณะฐะฝะพะณัะฐัะธั http://home.onego.ru/~chiezo/gif.htm
เชกเชพเชเชจเชฒเซเชก เชเชฐเซ:
เชธเซเชฐเซเชธ: www.habr.com