Banyere usoro iju maka ịchekwa ohere diski ike

Onye ọrụ ọzọ chọrọ ide ibe data ọhụrụ na draịvụ ike, mana o nweghị ohere zuru oke iji mee nke a. Achọghịkwa m ihichapụ ihe ọ bụla, ebe ọ bụ na "ihe niile dị ezigbo mkpa ma dị mkpa." Gịnịkwa ka anyị kwesịrị iji ya mee?

Ọ dịghị onye nwere nsogbu a. Enwere terabytes nke ozi na draịvụ ike anyị, ego a anaghị agbada. Ma olee otú ọ pụrụ iche? N'ikpeazụ, faịlụ niile bụ naanị nhazi nke ibe n'ogologo, ma eleghị anya, nke ọhụrụ adịghị iche na nke echekwaralarị.

O doro anya na ịchọ mpempe ozi echekwara na draịvụ ike bụ, ọ bụrụ na ọ bụghị ọdịda, mgbe ahụ ọ dịkarịa ala ọ bụghị ọrụ dị irè. N'aka nke ọzọ, ọ bụrụ na ọdịiche dị ntakịrị, mgbe ahụ ị nwere ike ịhazigharị ya ntakịrị ...

Banyere usoro iju maka ịchekwa ohere diski ike

TL; DR - mgbalị nke abụọ ikwu maka ụzọ dị iche iche iji kwalite data site na iji faịlụ JPEG, ugbu a n'ụdị nghọta karịa.

Banyere ibe n'ibe na ọdịiche

Ọ bụrụ na ị were iberibe data abụọ na-enweghị usoro, mgbe ahụ na nkezi ọkara nke ibe n'ime ha dabara adaba. N'ezie, n'etiti nhazi ndị nwere ike maka ụzọ abụọ ọ bụla ('00, 01, 10, 11"), ọkara nwere otu ụkpụrụ, ihe niile dị mfe ebe a.

Mana n'ezie, ọ bụrụ na anyị were faịlụ abụọ wee dabara otu na nke abụọ, mgbe ahụ anyị ga-atụfu otu n'ime ha. Ọ bụrụ na anyị echekwa mgbanwe ndị ahụ, anyị ga-emegharịghachi naanị delta koodu, nke dị n'ụzọ zuru oke na-enweghị anyị, ọ bụ ezie na a naghị ejikarị ya eme ihe maka otu nzube ahụ. Anyị nwere ike ịgbalị itinye usoro dị nta n'ime nke ka ukwuu, mana n'agbanyeghị nke a, anyị nwere ike ịlafu akụkụ dị oke egwu nke data ma ọ bụrụ na anyị ejiri ya na-akpachapụghị anya na ihe niile.

N'etiti gịnị na gịnị ka enwere ike iwepụ ọdịiche ahụ? Ọfọn, ya bụ, faịlụ ọhụrụ nke onye ọrụ dere bụ naanị usoro nke ibe n'ibe, nke anyị enweghị ike ime ihe ọ bụla n'onwe ya. Mgbe ahụ, ị ​​​​dị nnọọ mkpa ịchọta ndị dị otú ahụ ibe n'ibe na draịvụ ike na ha nwere ike ịgbanwe na-enweghị na-echekwa ihe dị iche, nke mere na ị pụrụ ịlanarị ha ọnwụ na-enweghị oké njọ pụta. Ma ọ bụ ihe ezi uche dị na ya ịgbanwe ọ bụghị naanị faịlụ na FS n'onwe ya, mana ụfọdụ ozi na-adịchaghị mma n'ime ya. Ma olee otu na otu?

Ụzọ dabara adaba

Faịlụ abịakọrọ na-efunahụ na-abịa napụta. jpeg ndị a niile, mp3 na ndị ọzọ, ọ bụ ezie na mkpakọ na-efunahụ, nwere ụyọkọ ibe n'ibe enwere ike ịgbanwe n'enweghị nsogbu. Ọ ga-ekwe omume iji usoro dị elu nke na-agbanwe ngwa ngwa ha n'ụzọ dị iche iche nke itinye koodu. Chere. Usoro dị elu ... mgbanwe na-enweghị atụ ... otu n'ime ọzọ ... ọ fọrọ nke nta ka ọ bụrụ steganography!

N'ezie, itinye otu ozi n'ime ozi ọzọ na-echetara usoro ya dị ka ihe ọ bụla ọzọ. Aghọtaghị m mgbanwe ndị a na-eme na uche mmadụ masịkwara m. Ebe okporo ụzọ dị iche iche dị na nzuzo: ọrụ anyị na-agbadata onye ọrụ na-etinye ozi ndị ọzọ na draịvụ ike ya, ọ ga-emerụ ya ahụ. Ọ ga-echefu ọzọ.

Ya mere, ọ bụ ezie na anyị nwere ike iji ha, anyị kwesịrị ime mgbanwe ụfọdụ. Ma mgbe ahụ, m ga-agwa ma gosi ha site na iji ihe atụ nke otu n'ime ụzọ ndị dị na usoro faịlụ nkịtị.

Banyere nkịta ọhịa

Ọ bụrụ na ị na-amanye ya n'ezie, ọ bụ ihe kacha mkpakọ n'ụwa. N'ezie, anyị na-ekwu maka faịlụ JPEG. Ọ bụghị naanị na enwere ọtụtụ ngwaọrụ na ụzọ dị adị maka itinye data n'ime ya, mana ọ bụ usoro eserese kachasị ewu ewu na mbara ala a.

Banyere usoro iju maka ịchekwa ohere diski ike

Agbanyeghị, ka ị ghara itinye aka na ịzụ nkịta, ịkwesịrị ịmachi ngalaba ọrụ gị na faịlụ nke usoro a. Ọ dịghị onye nwere mmasị na square monochrome nke na-apụta n'ihi oke mkpakọ, yabụ ị ga-amachi onwe gị na iji faịlụ abịakọrọ na-arụ ọrụ, na-ezere idegharị. Kpọmkwem, yana ọnụọgụ ọnụọgụ integer, nke na-anọgide na-arụ ọrụ maka mfu data - DCT na quantization, nke egosipụtara nke ọma na atụmatụ ntinye (n'ihi wiki nke Bauman National Library):
Banyere usoro iju maka ịchekwa ohere diski ike

Enwere ọtụtụ ụzọ enwere ike iji bulite faịlụ jpeg. Enwere njikarịcha enweghị efu (jpegtran), enwere njikarịcha "enweghị mfu", nke na-enye ihe ọzọ n'ezie, mana anyị anaghị eche banyere ha. A sị ka e kwuwe, ọ bụrụ na onye ọrụ dị njikere itinye otu ozi n'ime ọzọ iji mee ka ohere diski efu dị, mgbe ahụ ọ na-eme ka ihe oyiyi ya dịkwuo ogologo oge gara aga, ma ọ bụ na ọ chọghị ime nke a ma ọlị n'ihi egwu nke ịdị mma.

F5

Ezinụlọ dum nke algọridim dabara na ọnọdụ ndị a, nke ị nwere ike ịmara onwe gị na nke a ọma ngosi. Nke kachasị n'ime ha bụ algọridim F5 Site na Andreas Westfeld, na-arụ ọrụ na ọnụọgụ nke akụkụ nchapụta, ebe ọ bụ na anya mmadụ na-enwekarị mmetụta maka mgbanwe ya. Ọzọkwa, ọ na-eji usoro ntinye nke dabere na matrix encoding, nke na-eme ka o kwe omume ime mgbanwe ole na ole mgbe ị na-etinye otu ozi ahụ, na-ebuwanye ibu nke akpa ejiri.

Mgbanwe ndị ahụ n'onwe ha na-agbada n'ibelata uru zuru oke nke ọnụọgụgụ otu n'okpuru ọnọdụ ụfọdụ (ya bụ, ọ bụghị mgbe niile), nke na-enye gị ohere iji F5 bulite nchekwa data na draịvụ ike gị. Isi ihe bụ na ọnụọgụgụ mgbe mgbanwe dị otú ahụ ga-adị ole na ole ka Huffman kpuchiri ya n'ihi nkesa nkesa nke ụkpụrụ na JPEG, na efu ọhụrụ ga-enweta uru mgbe ị na-eji RLE na-etinye ha.

Mgbanwe ndị dị mkpa na-agbadata iji wepụ akụkụ ahụ na-ahụ maka nzuzo (nhazigharị okwuntughe), nke na-echekwa akụrụngwa na oge igbu oge, yana ịgbakwunye usoro maka iji ọtụtụ faịlụ rụọ ọrụ kama otu n'otu oge. O yighị ka onye na-agụ ya ga-enwe mmasị na usoro mgbanwe n'ụzọ zuru ezu karị, ya mere, ka anyị gaa n'ihu na nkọwa nke mmejuputa.

Teknụzụ dị elu

Iji gosi otú usoro a si arụ ọrụ, etinyere m usoro ahụ na C dị ọcha ma mee ọtụtụ njikarịcha ma n'ihe gbasara ngwa ngwa na ebe nchekwa (ị gaghị eche n'echiche ole foto ndị a na-atụle n'enweghị mkpakọ, ọbụna tupu DCT). Cross-platform enwetara site na iji nchikota nke ọba akwụkwọ libjpeg, PC и obere, nke anyị na-ekele ha. A na-ejikọta ihe ndị a niile site na 'mere', yabụ ndị ọrụ Windows chọrọ ịwụnye ụfọdụ Cygwin maka onwe ha maka nyocha, ma ọ bụ soro Visual Studio na ọba akwụkwọ n'onwe ha.

Mmejuputa a dị n'ụdị akụrụngwa njikwa na ọba akwụkwọ. Ndị nwere mmasị nwere ike ịmatakwu banyere iji nke ikpeazụ na readme na ebe nchekwa na Github, njikọ nke m ga-etinye na njedebe nke post.

Esi mee ihe?

Kpachapụ anya. A na-ahọrọ ihe oyiyi a na-eji maka nkwakọ ngwaahịa site na ịchọgharị site na iji okwu mgbe niile na ndekọ mgbọrọgwụ enyere. Mgbe emechara, enwere ike ibugharị faịlụ, degharịa aha na depụtaghachi ya n'ime oke ya, gbanwee faịlụ na sistemụ arụmọrụ, wdg. Otú ọ dị, ị kwesịrị ịkpachara anya ma ghara ịgbanwe ọdịnaya ozugbo n'ụzọ ọ bụla. Ịhapụ uru nke ọbụna otu bit nwere ike ime ka ọ ghara ikwe omume ị nwetaghachi ozi.

Mgbe emechara, ngwa ahụ na-ahapụ faịlụ nchekwa pụrụ iche nwere ozi niile dị mkpa maka mkpọpu, gụnyere data gbasara onyonyo ejiri. Site n'onwe ya, ọ na-atụ ihe dị ka kilobytes ole na ole ma ọ nweghị mmetụta ọ bụla dị mkpa na ohere diski ji.

Ị nwere ike nyochaa ikike enwere ike iji ọkọlọtọ '-a': './f5ar -a [folda ọchụchọ] [okwu Perl-compatible regular period]'. A na-eme mbukota site na iwu './f5ar -p [nchekwa nchekwa] [okwu Perl-dakọtara na mgbe niile] [faịlụ juru ebe niile] [aha ebe nchekwa]', na iwepu ya na './f5ar -u [faịlụ ebe nchekwa] [aha faịlụ eweghachitere] ]' .

Ngosipụta ọrụ

Iji gosi ịdị irè nke usoro ahụ, ebugoro m nchịkọta foto 225 n'efu nke nkịta sitere na ọrụ ahụ. Unsplash wee hụ na akwụkwọ ndị ahụ nnukwu pdf nke mita 45 nke olu nke abụọ Nkà nke Mmemme Knuta.

Usoro dị nnọọ mfe:

$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/

$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 17.0s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 39.4s
Saving the archive... ok

$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.4s
Decompressing... done in 21.0s
Writing extracted data... ok

$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf

$ du -sh dogs/
551M dogs/

nseta ihuenyo maka ndị fan

Banyere usoro iju maka ịchekwa ohere diski ike

Enwere ike ịgụ faịlụ a na-akpakọbeghị, ma ka kwesịrị ịgụ ya:

Banyere usoro iju maka ịchekwa ohere diski ike

Dị ka ị pụrụ ịhụ, site na mbụ 633 + 36 == 669 megabyte data na draịvụ ike, anyị bịara ọzọ obi ụtọ 551. Dị otú ahụ a radical iche na-akọwa site mbelata nke ụkpụrụ nke coefficients, nke na-emetụta ha. Mkpakọ na-enweghị atụ na-esochi: ibelata otu otu nwere ike “bepụ obere bytes n'ime faịlụ ikpeazụ n'ụzọ dị mfe. Agbanyeghị, nke a ka bụ ọnwụ data, ọ bụ ezie na ọ pere mpe, nke ị ga-anagide.

Ọ dabara nke ọma, ha anaghị ahụ anya kpamkpam. N'okpuru onye na-emebi ihe (ebe ọ bụ na habrastorage enweghị ike ijikwa nnukwu faịlụ), onye na-agụ nwere ike nyochaa ihe dị iche site na anya na ike ha, nwetara site na ibelata ụkpụrụ nke ihe gbanwere na mbụ: mbụ, nwere ozi n'ime, ihe dị iche (nke na-agba agba agba, obere ihe dị iche na ngọngọ).

Kama nkwubi okwu

N'ịtụle ihe isi ike ndị a niile, ịzụrụ draịvụ ike ma ọ bụ bulite ihe niile na igwe ojii nwere ike ịdị ka ihe ngwọta dị mfe karị maka nsogbu ahụ. Mana n'agbanyeghị na anyị bi n'oge dị egwu ugbu a, enweghị nkwa na echi ọ ka ga-ekwe omume ịga ịntanetị wee bulite data mgbakwunye gị niile ebe. Ma ọ bụ gaa n'ụlọ ahịa zụtara onwe gị draịvụ ike terabyte puku ọzọ. Mana ị nwere ike iji ụlọ ndị dị adị mgbe niile.

-> GitHub

isi: www.habr.com

Tinye a comment