PhilC
asked on
linux ascii to utf-16 (then sha1 and base64) encode
We have a communication protocol that requires us to Base64 Encoded a SHA1 hash of a UTF-16 encoded password. We have been given Java, javascript, and visual basic examples however we are running under Linux (redhat) the provided test string:TESTED@8691 the final output:rBbBKqbJodT5awZal/C SCYF/sFo= I have tried
run sha1 and base64 encoding on to_string with a length of 22 resulting output: GCXe7HMDoq/NRqo1WWYJDDYZzP 0=
If I loop through to_string I get:
output:
to_string 0 = 0
to_string 1 = 0
to_string 2 = 0
to_string 3 = 0
to_string 4 = 0
to_string 5 = 0
to_string 6 = 0
to_string 7 = 0
to_string 8 = 0
to_string 9 = 0
to_string 10 = 0
to_string 11 = 0
to_string 12 = 0
to_string 13 = 0
to_string 14 = 21
to_string 15 = 0
to_string 16 = 0
to_string 17 = 0
to_string 18 = 4
to_string 19 = 7e
to_string 20 = 13
to_string 21 = e
What am I missing? Thank You
iconv_t conv = iconv_open("UTF-16LE","ASCII"); // open succeeds
char *from_string=strdup("TESTED@8691");
size_t from_length=strlen(from_string);
size_t to_length=from_length*3;
size_t original_to_length=to_length;
char *to_string=(char*)calloc(1,to_length);
int convert_return=iconv(conv,&from_string,&from_length,&to_string,&to_length);
// convert_return is 0 indicating success, to_length is 22, from_length is 0
run sha1 and base64 encoding on to_string with a length of 22 resulting output: GCXe7HMDoq/NRqo1WWYJDDYZzP
If I loop through to_string I get:
for (int i=0; i<original_to_length-to_length; ++i) {
printf("to_string %d = %x",i,to_string[i]);
}
output:
to_string 0 = 0
to_string 1 = 0
to_string 2 = 0
to_string 3 = 0
to_string 4 = 0
to_string 5 = 0
to_string 6 = 0
to_string 7 = 0
to_string 8 = 0
to_string 9 = 0
to_string 10 = 0
to_string 11 = 0
to_string 12 = 0
to_string 13 = 0
to_string 14 = 21
to_string 15 = 0
to_string 16 = 0
to_string 17 = 0
to_string 18 = 4
to_string 19 = 7e
to_string 20 = 13
to_string 21 = e
What am I missing? Thank You
ASKER
iconv() accepts a char* that is why I used it. changing to wchar_t* still does not work
Thank you
Thank you
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
found the solution
you were using char* for input what cannot work in my opinion.
Sara