I am writing an implementation of a DES encryption with a 64 bit plaintext, taken from the pixel information in a BMP file. So I want to skip the header which is 54 bytes, but I am not sure how to do this. This will not be a dynamic project, in the sense that I will always use the same BMP file (as I am producing both a CBC and EBC mode BMP file at the program finish)
If you have no idea what I am talking about, check out this link.
http://www.giac.org/resources/whitepaper/cryptography/62.php

So I would like to open the bmp file, skip the first 54 bytes, then consecutively read 8 byte blocks and encrypt them. I just don't know very much about using files in C++.

Recommended Answers

All 7 Replies

char buffer[100];
ifstream f;

f.open ("pic.bmp", ios::binary);

// skip header
f.read (buffer, 54);

// read 8 bytes into buffer
f.read (buffer, 8);
commented: Thank you +2

Thank you. I do have one question though. What does the ios::binary do, does that translate the hex digits into binary when read into the buffer?

No. Binary mode simply ensures that all file bytes are put into the buffer as is, with no translation whatsoever. Text mode may, depending on the operating system, translate various bytes. For instance, in windows the usual end of line marker is ascii-13 followed by ascii-10. But when read in text mode, all your program sees is the ascii-10.

What I am planning on doing is bitwise operation on the 8 bytes read in from the file. I was thinking of converting the 8 bytes to an integer value, then I remembered ints in windows are 4 bytes. Is a long 8 bytes? And is there a way to convert the 8 bytes read in to the buffer into a long value I can manipulate?

Why would you want to convert it to something of you can just manipulate it one byte at a time?

How do I manipulate the bytes if they are stored as chars?

chars basically are bytes.
So you access them by subscripting the buffer: buffer[i]

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.