I don't have time for a full response yet (Sorry, have been busy

)

"Take the 4-th bit of the data binary â€“ 0

After it, insert the bit from the key binary."

Do you mean every fourth bit of the 'data'?

Since you 'insert' a bit, how is the message size affected? Likely, most data are of some power of two, thus any odd length will show the number of affected bits by insertion, from which one could perhaps move forward with an attack.

Also, I am not sure I understand this section:

/*

Take the first bit of the key binary â€“ 0

Take the first bit of the data binary after insertion â€“ 0

Key bit = 0, do nothing.

Take the second bit of the key binary â€“ 1

Take the second bit of the data binary after insertion â€“ 1

Key bit = 1, change data bit. Data bit = 1 => Data bit = 0

Etc.

*/

When does this come within the process? For every altered bit you then AND it with the adjacent bit to produce the final result?

Will get sleep and become human soon, I hope