Author: Andrew Stirling
Posted: 2009-05-09 at 11:05:44
Kam
You can get the SHA1 done via Craig Boyd's vfpencryption,.fll
http://www.sweetpotatosoftware.com/SPSBlog/2007/08/06/VFPEncryptionUpdate.aspx
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
different hash functions supported
1 = SHA1 (a.k.a SHA160)
2 = SHA256
3 = SHA384
4 = SHA512 *Default
5 = MD5
6 = RIPEMD128
7 = RIPEMD256
SET LIBRARY TO vfpencryption71.fll ADDITIVE
tempText ="Hello World" +CHR(13) + " was Jane's quote"
? (Hash(tempText,1)
? STRCONV(Hash(tempText,1),13)
I also think you need to have/download 'msvcp71.dll'
Andrew Stirling
01250 874580
HMRC Accredited UK payroll program
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 -----
> From: Stephen Russell
> To: ProFox Email List
> 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 = new UnicodeEncoding();
>> hashBytes = encoding.GetBytes(password.ToUpper().Trim());
>> SHA1 sha1 = new SHA1CryptoServiceProvider();
>> byte[] cryptPassword = sha1.ComputeHash(hashBytes);
>> String pwd= 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.
>
>