Jim Conger가 C++ 코드로 변환 한 Bruce Schneier의 클래스로 텍스트를 암호화하고 싶습니다. 암호화 한 후 암호화 된 텍스트를 해독하고 싶습니다. 이 문제를 해결하려면 파일을 사용하고 있습니다. 샘플 프로젝트를 만들었지 만 해독 된 파일에는 초기 파일과 동일한 텍스트가 포함되어 있지 않습니다. 무엇이 문제 일 수 있습니까?코코아 프로젝트에서 C++ 코드로 복어 암호화
복어 클래스 파일은 link입니다.
나는 XCode에서 Command line tool
프로젝트를 만들고 main.m
파일을 main.mm
으로 변경했습니다. 여기서 당신은 main.mm
파일의 내 내용을 찾을 수 있습니다 당신은 스트림을 암호화하는 패딩 블록 암호를 (CBlowFish::Encode
의 소스 코드를 볼)를 사용하는
#import "blowfish.h"
#include <stdlib.h>
#include <stdio.h>
#define my_fopen(fileptr, filename, mode) \
fileptr = fopen(filename, mode); \
if (fileptr == NULL) { \
fprintf(stderr, "Error: Couldn't open %s.\n", filename); \
exit(1); \
}
const char *input_file_name = "test.txt";
const char *encoded_file_name = "encoded.txt";
const char *decoded_file_name = "decoded.txt";
unsigned char key[] = "thisisthekey";
int main(void) {
FILE *infile, *outfile;
int result, filesize;
const int n = 8; // make sure this is a multiple of 8
const int size = 1;
unsigned char input[n], output[n];
CBlowFish bf;
bf.Initialize(key, sizeof(key)-1); // subtract 1 to not count the null terminator
my_fopen(infile, input_file_name, "rb")
my_fopen(outfile, encoded_file_name, "wb")
filesize = 0;
while (result = fread(input, size, n, infile)) {
filesize += result;
fwrite(output, size, bf.Encode(input, output, result), outfile);
}
fclose(outfile);
fclose(infile);
my_fopen(infile, encoded_file_name, "rb")
my_fopen(outfile, decoded_file_name, "wb")
while (result = fread(input, size, n, infile)) {
bf.Decode(input, output, result);
fwrite(output, sizeof(output[0]), filesize < result ? filesize : result, outfile);
filesize -= result;
}
fclose(outfile);
fclose(infile);
return 0;
}
예가 있습니까? –
@ David 제발 내 질문에보십시오 : http://stackoverflow.com/questions/19031842/dycrypt-value-from-blowfish-objective-c – QueueOverFlow