I've been searching for hours today and just can't find anything that works out for me. The one I've just had a look at, with no luck, is "How to convert UTF-8 encoded std::string to UTF-16 std::string".
My question is, with a brief explanation:
I want to make a valid NTLM hash in std C++, and I'm using OpenSSL's library to create the hash using its MD4 routines. I know how to do that, so does anyone know how to convert the std::string
into a UTF-16 LE encoded string which I can pass to the MD4 functions to get a correct digest?
So, can I have a std::string
which holds the char
type, and convert it to a UTF16-LE encoded variable length std::string_type? Whether that be std::u16string
, or std::wstring
?
And would I use s.c_str()
or s.data()
and would the length()
function report correctly in both cases?
I think something like this should do the trick:
Note: that std::wstring_convert is deprecated in
C++17
but I still favor using it rather than a non-standard library given that it is portable, has no dependencies and will no doubt remain until replaced.And, if all else fails, you can reimplement these same functions with alternative code without changing any other part of the application.
Apologies, firsthand... this will be an ugly reply with some long code. I ended up using the following function, while effectively compiling in
iconv
into my windows application file by file :)Hope this helps.