I kekahi manawa ua kākau wau i kaʻu
I kēia lā e hoʻāʻo mākou e ʻeli hohonu a nānā i ka algorithm LSB. Inā makemake ʻoe, ʻoluʻolu ʻoe ma lalo o ka pōpoki. (Ma lalo o ka ʻoki ʻana ke kaʻa: e pili ana i kahi megabyte.)
ʻO ka mea mua, pono e hana i kahi hoʻolauna pōkole. Uaʻike nā kānaka a pau i ke kumu o ka cryptography e hikiʻole ke heluhelu i kaʻike huna. ʻOiaʻiʻo, aia ka cryptography i kāna mau noi, akā aia kekahi ala ʻē aʻe i ka pale ʻikepili. ʻAʻole pono mākou e hoʻopili i ka ʻike, akā e hoʻohālike ʻaʻole i loaʻa iā mākou. ʻO kēia ke kumu i hana ʻia ai ka steganography. Ua hōʻoiaʻiʻo ʻo Wikipedia iā mākou ʻo "steganography (mai ka Greek στεγανοσ - huna a me ka Greek γραφω - ke kākau nei au, ʻoiaʻiʻo "ka kākau huna") ʻo ia ka ʻepekema o ka hoʻouna huna ʻana o ka ʻike ma ka mālama ʻana i ka ʻoiaʻiʻo o ka hoʻouna huna.
ʻOiaʻiʻo, ʻaʻohe mea i pāpā i ka hoʻohui ʻana i nā ʻano cryptographic a me steganographic. Eia kekahi, ma ka hoʻomaʻamaʻa hana lākou i kēia, akā ʻo kā mākou hana ke hoʻomaopopo i nā kumu. Inā ʻoe e noʻonoʻo pono i ka ʻatikala Wikipedia, e ʻike ʻoe aia nā steganography algorithms i ka mea i kapa ʻia. ipu a me ka memo. ʻO kahi pahu kahi ʻike e kōkua e hūnā i kā mākou leka huna.
I kā mākou hihia, he kiʻi ka pahu i ka format BMP. ʻO ka mua, e nānā kākou i ke ʻano o kēia faila. Hiki ke hoʻokaʻawale ʻia ka faila i 4 mau ʻāpana: ke poʻo waihona, ke poʻo kiʻi, ka palette a me ke kiʻi ponoʻī. No kā mākou kumu, pono mākou e ʻike i ka mea i kākau ʻia ma ke poʻo.
ʻO nā paita mua ʻelua o ke poʻo, ʻo ia ka pūlima BM, a laila kākau ʻia ka nui o ka faila ma nā huaʻōlelo pālua, mālama ʻia nā paina 4 aʻe a pono e loaʻa nā zeros, a ʻo ka hope, aia kekahi huaʻōlelo pālua i ka offset mai ka hoʻomaka ʻana o ka waihona i nā byte maoli o ke kiʻi. I loko o kahi faila bmp 24-bit, ua hoʻopili ʻia kēlā me kēia pika me ʻekolu BGR bytes.
I kēia manawa ua ʻike mākou pehea e kiʻi ai i ke kiʻi, ʻo ka mea wale nō e hoʻomaopopo pehea e hiki ai iā mākou ke kākau i ka ʻike e pono ai mākou ma laila. No kēia, pono mākou i ke ala LSB. ʻO ke kumu o ke ʻano penei: ke hoʻololi nei mākou i nā ʻāpana liʻiliʻi loa i loko o nā bytes kuleana no ka hoʻopili kala. E ʻōlelo kākou inā ʻo 11001011 ka paita aʻe o kā mākou leka huna, a ʻo nā paita o ke kiʻi ʻo...11101100 01001110 01111100 0101100111..., a laila e like ke ʻano o ka hoʻopili ʻana. E hoʻokaʻawale mākou i ka byte memo huna i nā ʻāpana ʻelua-bit: 4, 11, 00, 10, a hoʻololi i nā ʻāpana haʻahaʻa o ke kiʻi me nā ʻāpana hopena: ...1111 01001100 01111110 0101100111…. ʻAʻole ʻike ʻia kēlā ʻano pani i ka maka o ke kanaka. Eia kekahi, ʻaʻole hiki ke hōʻike i nā hoʻololi liʻiliʻi he nui nā mea hoʻopuka kahiko.
Ua maopopo hiki iā ʻoe ke hoʻololi ʻaʻole wale i nā 2 liʻiliʻi liʻiliʻi liʻiliʻi, akā i kekahi helu o lākou. Aia kēia ʻano: ʻoi aku ka nui o nā bits a mākou e hoʻololi ai, ʻoi aku ka nui o ka ʻike i hiki iā mākou ke hūnā, a ʻoi aku ka nui o ke keakea ʻana i ke kiʻi kumu. Eia kekahi laʻana, eia nā kiʻi ʻelua:
ʻOiai ʻo kaʻu mau hana maikaʻi loa, ʻaʻole hiki iaʻu ke ʻike i ka ʻokoʻa ma waena o lākou, akā naʻe, ma ke kiʻi ʻelua, me ka hoʻohana ʻana i ke ʻano i wehewehe ʻia, hūnā ʻia ka mele a Lewis Carroll "The Hunting of the Snark". Inā ua heluhelu ʻoe i kēia mamao, a laila makemake paha ʻoe e aʻo e pili ana i ka hoʻokō. He mea maʻalahi loa ia, akā e aʻo koke wau iā ʻoe ua hana ʻia nā mea āpau ma Delphi. ʻElua kumu no kēia: 1. Manaʻo wau he ʻōlelo maikaʻi ʻo Delphi; 2. Ua hānau ʻia kēia papahana ma ke kaʻina hana o ka hoʻomākaukau ʻana i ke ʻano o ka ʻike kamepiula, a ʻo nā kāne aʻu e aʻo nei i kēia papa ʻaʻole lākou i ʻike i kekahi mea ʻē aʻe ma mua o Delphi. No ka poʻe i kamaʻāina ʻole i ka syntax, hoʻokahi mea pono e wehewehe ʻia: ʻo ka shl x ka hoʻololi iki ʻana i ka hema e x, ʻo ka shr x kahi hoʻololi iki i ka ʻākau e x.
Manaʻo mākou e kākau ana mākou i nā kikokikona i mālama ʻia i loko o kahi kaula i loko o ka pahu a hoʻololi i nā bytes haʻahaʻa ʻelua:
Helu hoʻopaʻa inoa:
no ka i:=1 i ka loa(str) hana
hoomaka
l1:=byte(str[i]) shr 6;
l2:=byte(str[i]) shl 2; l2:=l2 shr 6;
l3:=byte(str[i]) shl 4; l3:=l3 shr 6;
l4:=byte(str[i]) shl 6; l4:=l4 shr 6;
f.ReadBuffer(tmp,1);
f.Kulana:=f.Kulana-1;
tmp:=((tmp shr 2) shl 2)+l1;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Kulana:=f.Kulana-1;
tmp:=((tmp shr 2) shl 2)+l2;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Kulana:=f.Kulana-1;
tmp:=((tmp shr 2) shl 2)+l3;
f.WriteBuffer(tmp,1);
f.ReadBuffer(tmp,1);
f.Kulana:=f.Kulana-1;
tmp:=((tmp shr 2) shl 2)+l4;
f.WriteBuffer(tmp,1);
hopena;
code e heluhelu ai:
no ka mea i:=1 i MsgSize hana
hoomaka
f.ReadBuffer(tmp,1);
l1:=tmp shl 6;
f.ReadBuffer(tmp,1);
l2:=tmp shl 6; l2:=l2 shr 2;
f.ReadBuffer(tmp,1);
l3:=tmp shl 6; l3:=l3 shr 4;
f.ReadBuffer(tmp,1);
l4:=tmp shl 6; l4:=l4 shr 6;
str:=str+char(l1+l2+l3+l4);
hopena;
ʻAe, no ka poʻe palaualelo maoli -
Спасибо.
Source: www.habr.com