Crypto++ を使用して AES で文字列を暗号化しています。正常に動作しますが、キーであるバイト値を返す関数を作成したいと思います。
byte AESBest::gen_key()
{
AutoSeededRandomPool prng;
// warning: address of local variable ‘key’ returned [enabled by default]
byte key[AES::MAX_KEYLENGTH];
prng.GenerateBlock(key, sizeof(key));
//Error: invalid conversion from ‘byte {aka unsigned char}’ to ‘const byte* {aka const unsigned char*}’ [-fpermissive] }
return key;
}
良い。不明な点があり、鍵を返却できません。日食を設定byte key[AES::MAX_KEYLENGTH]
すると、返されると思われる警告が表示されます。しかし、最後にキーを返すと、無効な変換に関する奇妙なエラーが発生します。
なぜこれが起こるのですか?
どうすればこの問題を解決できますか?
編集:まあ。今、私はこれらの2つの機能を持っています。しかし、最初のものはうまく機能し、aes キーの 64 文字を返します。(gen_all)
2 つ目 - 理由はわかりません - 4 つだけが返されます。なんで?(gen_part)
string AESBest::gen_all()
{
AutoSeededRandomPool prng;
byte key[AES::MAX_KEYLENGTH];
prng.GenerateBlock(key, sizeof(key));
string encoded;
encoded.clear();
StringSource(key, sizeof(key), true,
new HexEncoder(
new StringSink(encoded)
)
);
return encoded;
}
と:
string AESBest::gen_part()
{
AutoSeededRandomPool prng;
std::vector<byte> key(AES::MAX_KEYLENGTH);
prng.GenerateBlock(key.data(), key.size());
string encoded;
encoded.clear();
StringSource(key.data(), sizeof(key.size()), true,
new HexEncoder(
new StringSink(encoded)
)
);
return encoded;
}
2番目のバグはどこにありますか?
編集:気にしないでください!バグは にあったsizeof
ため、key.size() NO sizeof(key.size())