// Description:
// By Sarah Dean
// Email: sdean12@sdean12.org
// WWW: http://www.FreeOTFE.org/
//
// -----------------------------------------------------------------------------
//
#include <stdio.h>
#define SECTOR_SIZE 512
// Dump out to "stream" a pretty-printed hex dump of the memory from "data"
// Not perfect, but hey, it'll do for now...
// If dataLength%columns != 0, you may get the ASCII on the last line in
// the wrong place
//
// stream - the stream to which the pretty-printed dump should be sent
// data - pointer to the data to be pretty-printed
// dataLength - amount of data to be dumped out (in bytes)
// columns - number of columns to be used in pretty-printing the hexdump
// indent - pointer to a string to be printed at the start of each line
void HexDump(FILE *stream, const unsigned char *data, int dataLength, int columns, char *indent)
{
int i;
int j;
// Print column numbers
fprintf(stream, "%s | ", indent);
for (j = 0; j < columns; j++) {
fprintf(stream, "%02x ", j);
}
fprintf(stream, " ASCII\n");
// Print line under column numbers
fprintf(stream, "%s---+-", indent);
for (j = 0; j < columns; j++) {
fprintf(stream, "---");
}
fprintf(stream, "-------\n");
// Print out nicely formatted data
for (i = 0; i < dataLength; i = i + columns) {
fprintf(stream, "%s%02x | ", indent, i);
// Hex representation
for (j = 0; j < columns; j++) {
fprintf(stream, "%02x ", data[i + j]);
}
fprintf(stream, " ");
// ASCII representation (where possible)
for (j = 0; j < columns; j++) {
// Print char if it's printable, otherwise print a "."
if (((data[i + j]) >= ' ') && ((data[i + j]) <= '~')) {
fprintf(stream, "%c", data[i + j]);
} else {
fprintf(stream, ".");
}
}
fprintf(stream, "\n");
}
}
void main(void)
{
FILE *inFile;
FILE *outFile;
unsigned char inBuf[SECTOR_SIZE];
unsigned char outBuf[SECTOR_SIZE];
unsigned char* inBufPtr;
unsigned char* outBufPtr;
unsigned int x;
unsigned int i;
int cipher;
// 20 * 8 = 160 bits
// - it should be 20, not 32
unsigned char key[32];
unsigned char keyIdx;
unsigned int keyBytes;
// Blank out key; ensures data beyond end of buffer is zero'd
memset(key, 0, sizeof(key));
key[ 0] = 'p';
key[ 1] = 'a';
key[ 2] = 's';
key[ 3] = 's';
key[ 4] = 'w';
key[ 5] = 'o';
key[ 6] = 'r';
key[ 7] = 'd';
keyBytes = 8; // In *bytes*
inFile = fopen("inFile.dat", "rb");
if (inFile == NULL) {
printf("Unable to open inFile file\n");
exit(-1);
}
outFile = fopen("outFile.dat", "wb");
if (outFile == NULL) {
printf("Unable to open outFile file\n");
exit(-1);
}
printf("Sector size: %d\n", SECTOR_SIZE);
// Main loop
while (!feof(inFile)) {
x = fread(inBuf, 1, SECTOR_SIZE, inFile);
if (x > 0) {
printf("Bytes read: %d\n", x);
// Pad out, if needed
if (x < SECTOR_SIZE) {
// Zero out any part of the unused buffer
// This *shouldn't* be needed - it depends on the cypher implementation,
// and whether it reads beyond the data supplied to it
memset(&inBuf[x], 0, (SECTOR_SIZE - x));
}
inBufPtr = inBuf;
outBufPtr = outBuf;
if (keyBytes < 1) {
memcpy(outBuf, inBuf, SECTOR_SIZE);
} else {
keyIdx = 0;
for (i = 0; i < SECTOR_SIZE; i++) {
outBufPtr[i] = inBufPtr[i] ^ key[keyIdx];
// Increment key ptr, ready for next...
keyIdx++;
if (keyIdx >= keyBytes) {
keyIdx = 0;
}
}
}
HexDump(stdout, (const unsigned char*)outBuf, 64, 8, (char *)"");
fwrite(outBuf, 1, SECTOR_SIZE, outFile);
//exit(1);
}
} // while (!feof(inFile))
fclose(inFile);
fclose(outFile);
}
異或加解密
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤泪,“玉大人灶泵,你說我怎么就攤上這事《酝荆” “怎么了赦邻?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長实檀。 經(jīng)常有香客問我惶洲,道長,這世上最難降的妖魔是什么膳犹? 我笑而不...
- 正文 為了忘掉前任恬吕,我火速辦了婚禮,結(jié)果婚禮上须床,老公的妹妹穿的比我還像新娘铐料。我一直安慰自己,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布钠惩。 她就那樣靜靜地躺著柒凉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篓跛。 梳的紋絲不亂的頭發(fā)上膝捞,一...
- 文/蒼蘭香墨 我猛地睜開眼芽丹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卜朗?” 一聲冷哼從身側(cè)響起拔第,我...
- 正文 年R本政府宣布闲坎,位于F島的核電站疫粥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏腰懂。R本人自食惡果不足惜梗逮,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悯恍。 院中可真熱鬧库糠,春花似錦、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至艘虎,卻和暖如春唉侄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背野建。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 安全加密C語言庫OpenSSL,在Android中服務(wù)器和客戶端之間的簽名驗證和數(shù)據(jù)加密通信等目溉。 OpenSSL系...
- 小學(xué)語文修改病句的方法 修改病句是小學(xué)語文考試中常見的題型,在修改病句之前河咽,我們應(yīng)該清晰的了解有哪些病句現(xiàn)象钠右,下面...
- 【蝴蝶效應(yīng)】 蝴蝶效應(yīng):上個世紀(jì)70年代飒房,美國一個名叫洛倫茲的氣象學(xué)家在解釋空氣系統(tǒng)理論時說,亞馬遜雨林一只蝴蝶...