Re: VFP9 SP1 encoding little endian UTF 16, SHA1, base64

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

http://www.calcpay.co.uk

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

> http://www.calcpay.co.uk

> 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]

©2009 KAM.covad