私はこのプロジェクトで1週間作業しています。私は問題を解決できません。 バイナリファイル(.exe、.jpgなど)を暗号化/復号化できる暗号化装置を作っています。
私はベクトルを使ってバイナリファイルからデータを正しく取得することができます。
私は正しくベクトルからのデータを暗号化/復号化できません。
いくつかのコード:問題を暗号化するchar *
if (encryptFile)
{
Crypt crypt;
//TOencryptfile.open(writeFile, ios::binary | ios::out);
vector<char> buffer((istreambuf_iterator<char>(encryptFile)),(istreambuf_iterator<char>()));
cout << buffer.size() << endl;
_getch();
for (std::vector<char>::iterator i = buffer.begin(); i != buffer.end(); ++i) {
// encryption that fails
temp = crypt.getKeyFromString(&*i , key, strlen(&*i));
}
TOencryptfile.close();
encryptFile.close();
}
と関数getKeyFromString:
KEYCRYPT Crypt::getKeyFromString(KEYCRYPT text, KEYCHAR charkey, keylength length) {
int string_size = std::strlen(text);
KEYCRYPT textcrypt = new char[string_size + 1];
std::strcpy(textcrypt, text);
int key = strlen(charkey);
for (int i = 0; i < length; i++) {
if (strlen(text) != 0) {
textcrypt[i] = text[i]^charkey[i % (sizeof(charkey)/sizeof(char))];
//keylvl += text[i]^(int(charkey) + i) % key;
//keyfnl += keylvl[i]^(int(charkey) - i) * key;
}
}
return textcrypt;
}
と最後のタイプ:
typedef char* KEYCRYPT;
typedef int KEY;
typedef char* KEYCHAR;
typedef int keylength;
誰でも*i
を暗号化するための良い方法を知っていますか?
私の方法がうまくいかないので、うまくgetKeyFromString(temp, key, strlen(temp))
「i」が指しているものは1文字であるように見えます。暗号APIは文字列ではなく、文字列を暗号化します。感謝! –
ありがとう!解決策として何をお勧めしますか? – waterlight
@waterlightファイルの内容を文字列に入れて、暗号APIに渡します。 – Barmar