Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Como proteger un campo memo
Message
From
10/07/2003 13:35:01
 
 
To
10/07/2003 11:27:21
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
00808879
Message ID:
00808934
Views:
33
Tambien, si quere hacerlo dificil para otro apps a mirarlo, puede usar algo como:
(lo siento para mi espanol terrible)
* create a test table with a memo field
CREATE TABLE testtable (info m)
* store two lines of text in the memo field
mystr="This is a test."+CHR(10)+CHR(13)+"Line 2"+CHR(10)+CHR(13)
APPEND BLANK
REPLACE testtable.info WITH mystr
* view the memo field not encrypted
BROWSE
* encrypt the information in the memo field
_xldata=.T.  && process the encryption/decryption
encryptstr=wordhide(testtable.info)
REPLACE testtable.info WITH encryptstr
* see that the field is now encrypted
browse
* decrypt the information in the memo field
decryptstr=wordhide(testtable.info)
REPLACE testtable.info WITH decryptstr
* see that the field is now not encrypted
browse
USE IN testtable
RETURN

FUNCTION wordhide
*******************************************
* Psuedo 16bit data encryption algorithm.
*        Encrypts string data.
* Useage: <str1>=wordhide(<str2>)
* Convert back: <str3>=wordhide(<str1>)
*******************************************
* 03/18/2003 TCHolzer  Added check for _xldata existance
*
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
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"
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform