Author: KAM.covad
Posted: 2009-05-09 at 21:22:01
Thanks. That saves me the trouble of using openssl
You are correct. I was changing it to upper case like the specs, however =
for that example, they did not make it upper case.=20
----- Original Message -----=20
From: Andrew Stirling=20
To: profox@leafe.com=20
Sent: Saturday, May 09, 2009 5:54 PM
Subject: Re: VFP9 SP1 encoding little endian UTF 16, SHA1, base64
Kam
Re the example
temp =3D "Aladdin:open sesame"
? STRCONV(temp,13)
gives:
QWxhZGRpbjpvcGVuIHNlc2FtZQ=3D=3D
is that not what you want?
Andrew Stirling
01250 874580
HMRC Accredited UK payroll program
KAM.covad wrote:
> Thanks,=20
>=20
> Regarding base64, strconv() does not give the answer I need. I was =
given this reference: =
http://en.wikipedia.org/wiki/Basic_authentication_scheme
> I was able to duplicate their result by using a batch file to run =
openssl. It is not quite as clean as I would like, but it works fine and =
is easy.
>=20
> The only thing left is UTF-16.
>=20
>=20
> ----- Original Message -----=20
> From: Andrew Stirling=20
> To: profox@leafe.com=20
> Sent: Saturday, May 09, 2009 8:05 AM
> Subject: Re: VFP9 SP1 encoding little endian UTF 16, SHA1, base64
>=20
>=20
> Kam
>=20
> You can get the SHA1 done via Craig Boyd's vfpencryption,.fll
> =
http://www.sweetpotatosoftware.com/SPSBlog/2007/08/06/VFPEncryptionUpdate=
.aspx
>=20
> Function HASH()
> Signature: Hash(cStringtoHash[, nHashType])
> Parameters:
> cStringtoHash - A plain text string you wish to have hashed
> nHashType - The type of hash function to generate. There are currently =
7=20
> different hash functions supported
>=20
> 1 =3D SHA1 (a.k.a SHA160)
> 2 =3D SHA256
> 3 =3D SHA384
> 4 =3D SHA512 *Default
> 5 =3D MD5
> 6 =3D RIPEMD128
> 7 =3D RIPEMD256
>=20
> SET LIBRARY TO vfpencryption71.fll ADDITIVE
> tempText =3D"Hello World" +CHR(13) + " was Jane's quote"
> ? (Hash(tempText,1)
> ? STRCONV(Hash(tempText,1),13)
>=20
> I also think you need to have/download 'msvcp71.dll'
>=20
> Andrew Stirling
> 01250 874580
> HMRC Accredited UK payroll program
>=20
>=20
> KAM.covad wrote:
>> You could, but it has too many years since I did any assembler or C. =
I have 20+ years in VFP so I am going to do everything there if I can. I =
use the windows API alot so will go that way if possible.
>>
>> STRCONV will do the base64 (thanks to Tracy). The VFP manual for XML =
web services talks about UTF-16 (making the double bytes that I need in =
case the password has characters that are not plain text). I still don't =
know about the SHA1.
>>
>>
>>
>> ----- Original Message -----=20
>> From: Stephen Russell=20
>> To: ProFox Email List=20
>> Sent: Friday, May 08, 2009 12:38 PM
>> Subject: Re: VFP9 SP1 encoding little endian UTF 16, SHA1, base64
>>
>>
>> On Fri, May 8, 2009 at 1:54 PM, KAM.covad
>> <a_gmail_noSpam@kenmcginnis.com> wrote:
>>> I need to encode a password:
>>> 1. convert to upper case (yes, I know how to do this)
>>> 2. Unicode it in little endian UTF16
>>> 3. SHA1 it
>>> 4. base64 encode it
>>>
>>> Here is an example I was given, but I have never used those methods =
and I do not believe they are in VFP
>>>
>>> The encoding process for password is: first convert to uppercase, =
then Unicode it in littleendian
>>> UTF16,
>>> then SHA1 it,
>>> then base64 encode it.
>>> UnicodeEncoding encoding =3D new UnicodeEncoding();
>>> hashBytes =3D encoding.GetBytes(password.ToUpper().Trim());
>>> SHA1 sha1 =3D new SHA1CryptoServiceProvider();
>>> byte[] cryptPassword =3D sha1.ComputeHash(hashBytes);
>>> String pwd=3D Convert.ToBase64String(cryptPassword);
>> -------------------
>>
>> That is straight up C#.
>>
>> You could make a dll to do that and register it.
>> You pass in string and it returns string back.
>>
>>
>=20
[excessive quoting removed by server]