Clear Filters
Clear Filters

Image and Key XORing

3 views (last 30 days)
Evolution
Evolution on 8 Feb 2012
Hi there i am still stuck in xoring a 256 byte value with an image stored in a 3D array ? what should be the steps to do it ?I want to the store the first 256 bytes of the image and xor it with key then another 25 bytes of image with the same key and so on .I would later display my results in a figure ?
Any help would be greatly appreciated .
thanks

Answers (1)

Walter Roberson
Walter Roberson on 8 Feb 2012
Untested:
t = reshape(YourImage(:), 256, []);
EncryptedImage = reshape( bsxfun(@xor, t, YourKey(:).'), size(YourImage) );
Of course you might have a rather different idea of what the "first" 256 bytes of an image are...
  3 Comments
Walter Roberson
Walter Roberson on 8 Feb 2012
Correct. Your question did say what to do if your image was not divisible in to 256 byte groups, so I did not code for it.
xc = x(:);
nel = size(xc,1);
npad = mod(256 - mod(nel,256), 256);
xc = vertcat(xc, zeros(npad, 1));
t = reshape(xc, 256, []);
enct = bsxfun(@xor, t, YourKey(:).');
enct(end-npad+1:end) = [];
EncryptedImage = reshape( enct, size(x));
Evolution
Evolution on 9 Feb 2012
thank a lot for the code .Its really helping me .Just before executing the bsxfun command i checked the values in variable passed in the function.
t has dimensions of 256x589 and yourkey(:).' has 1X256
After executing the function i got the error .
>> enct = bsxfun(@xor, t, r(:).');
??? Error using bsxarg: All non-singleton dimensions must match.
Error in ==> bsxfun at 100
[AX BX] = bsxarg(A,B);
I then swapped the variables
>> enct = bsxfun(@xor,r(:).',t);
??? Error using bsxarg: All non-singleton dimensions must match.
Error in ==> bsxfun at 100
[AX BX] = bsxarg(A,B);
again same error .
if its not too much can you help me with the error ?
thank you again for all the help.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!