Я пытаюсь использовать некоторые строки во время компиляции (их не нужно извлекать), используя библиотеку Crypto++ и функцию constexpr
. Это код, который я до сих пор:Хранение времени компиляции с constexpr и CryptoPP
constexpr const char* operator "" _SHA3_HASH(const char *input, unsigned int length){
CryptoPP::SHA3_512 hash;
byte digest [CryptoPP::SHA3_512::DIGESTSIZE];
hash.CalculateDigest(digest, (byte*)input, length);
return (const char*) digest;
}
Для использования: std::string passwordHash="password1234"_SHA3_HASH
Я не думаю, что есть способ, я могу получить эту работу, так как CryptoPP::SHA3_512
класс, вероятно, не literal- дружелюбный. Есть ли лучшая (или рабочая) альтернатива, которую я могу использовать?
Примечание:
- Я предпочел бы использовать библиотеку Crypto ++, если это возможно
- SHA-3 был бы хорошо, но любой безопасный хэш будет делать
- Если я не могу во время компиляции хэша, какой мои альтернативы?
- Я просмотрел возможные дубликаты, но ни один из них не обнаруживает какой-либо метод для сложного кода в функциях
constexpr
. - Я использую встроенный компилятор в Qt creator, который является MinGW 32 бит.
Я имею в виду, что когда я открываю .exe в Notepad (oe), я не вижу строки, только хэш. Могу ли я попытаться разучиться в [твист-версию] (https://twitter.com/TweetFIPS202)? – Mutantoe
, если вы успешно реализуете хеширование SHA3 как constexpr, то в оптимизированной сборке исходных строк не будет - только хэш (по крайней мере, в clang). –