Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Where to Store LoginId/Password?
Message
De
01/07/2004 10:52:01
 
 
À
01/07/2004 07:13:55
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00919101
Message ID:
00919633
Vues:
8
Hi Fernando,

Sometimes the encrypted password contains an ansicode of 0 at the end of it and it forces end of the line in the messagebox.
_xldata=.T.

Dimension TabStrings [6]

TabStrings [1] = "MyPassord"
TabStrings [2] = "This one works"
TabStrings [3] = "But this one doesn't!"
TabStrings [4] = "This one works: 0a1b2c"
TabStrings [5] = "This one doesn't: 00a11b22c"
TabStrings [6] = "adm003216"                     &&  This is, actually, a valid administrator login

CREATE TABLE ctest (cOPass c(50), cObPass c(100), cBPass c(50))

For I = 1 to 6

	 APPEND BLANK
	
    cOrigPass = TabStrings [I]
    
    REPLACE ctest.cOPass WITH cOrigPass
    
    cObjtPass = wordhide (cOrigPass)
    
    REPLACE ctest.cObPass WITH cObjtPass
    
    cBackPass = wordhide (cObjtPass)

    REPLACE ctest.cBPass WITH cBackPass
    
    CLEAR
    mvalue = ''
    FOR ia = 1 TO LEN(cBackPass)
    	IF ASC(SUBSTR(cBackPass,ia, 1)) > 0
    		mvalue = mvalue + SUBSTR(cBackPass,ia, 1)
    	ENDIF
    ENDFOR
	
    mvalue1 = ''
    FOR ib = 1 TO LEN(cObjtPass)
    	IF ASC(SUBSTR(cObjtPass,ib, 1)) > 0
    		mvalue1 = mvalue1 + SUBSTR(cObjtPass,ib, 1)
    	ENDIF
    ENDFOR

	 cBackPass = mvalue
    REPLACE ctest.cBPass WITH cBackPass
    
    Messagebox ("cOrigPass: " + cOrigPass + Chr (13) + ;
                "cObjtPass: " + mvalue1 + Chr (13) + ;
                "cBackPass: " + ctest.cBPass)

EndFor    
BROWSE
USE IN ctest

*******************************************
* Psuedo 16bit data encryption algorithm.
*
* Useage: <str1>=wordhide(<str2>)
* Convert back: <str3>=wordhide(<str1>)
*
*******************************************
*
PROCEDURE wordhide
PARAMETER xstr

*--03/18/2003 TCH
IF UPPER(TYPE('_xldata'))=="U"
   PRIVATE _xldata
   _xldata=.F.
ENDIF

PRIVATE i,j,ret,xval,temp
newstr = xstr
IF _xldata
   newstr = ""
   * Get pairs of characters from the string
   FOR k = 1 TO LEN(xstr) STEP 2
      v3=ASC(SUBSTR(xstr,k+1,1)) + ;
         ASC(SUBSTR(xstr,k,1)) * 256

      * Don't encrypt 2 spaces together.
      IF v3=8224
         v4=v3
      ELSE
         v4=messybits(v3)
      ENDIF
      v1 = 0
      v2 = 0
      IF v4 >= 256
         v1 = INT(v4 / 256)
         v4 = v4 - (v1 * 256)
      ENDIF
     	v2 = INT(v4)
      newstr=newstr+CHR(v1)+CHR(v2)
   ENDFOR
ENDIF
? newstr
RETURN newstr

*****************************
PROCEDURE messybits
   *****************************

   * This routine takes a 16bit number (0 - 65535), converts it to BINARY and
   * then rearranges the BITS for data encryption.

   PARAMETER dword
   PRIVATE _i,_j,retval,_xval,temp

   retval = ""
   FOR _j = 15 TO 0 STEP -1
      IF dword >= 2^_j
         retval=retval+"1"
         dword = dword - 2^_j
      ELSE
         retval=retval+"0"
      ENDIF
   ENDFOR

   * Move through 16 bits, get every 4th bit and make new binary number
   temp = ""
   FOR _i = 1 TO 4
      FOR _j = 0 TO 3
         temp = temp + SUBSTR(retval,_i+(_j*4),1)
      ENDFOR
   ENDFOR

   retval=temp

   * Convert the BINARY number back to decimal and, just
   * for fun, flip the BINARY number backwards as we do it.

   _xval=0
   FOR _j = 1 TO LEN(retval)
      IF SUBSTR(retval,_j,1) = "1"
         _xval = _xval + 2^(_j-1)
      ENDIF
   ENDFOR
  	RETURN _xval
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform