home *** CD-ROM | disk | FTP | other *** search
/ Stickerpedia Stickerbook / Stickerbook.iso / pc / DATA / objects.cxt / 00033_Script_oEnigma < prev    next >
Text File  |  2003-03-19  |  2KB  |  77 lines

  1. --¨
  2. oEnigma
  3.  
  4.  
  5.  
  6.  
  7. global oEnigma, oET
  8.  
  9.  
  10. property pMyName
  11. property pDefaultKey
  12.  
  13. on new me
  14.   set pMyName = "oEnigma"
  15.   set pDefaultKey = "*1#2*3#4@5#6@7#8]9#0]"
  16.   
  17.   -- updateProgressBar ("Object loading", oEnigma && "status #ok")
  18.   addObject me
  19.   return me  
  20. end
  21.  
  22.  
  23. on showProps me
  24.   writePropsToLog oET, me, pMyName
  25. end
  26.  
  27.  
  28. on buddyEncrypt me, str, chiffre
  29.   if chiffre = void then set chiffre = pDefaultKey
  30.   return baEncryptText( str ,  chiffre)
  31. end
  32.  
  33. on buddyDecrypt me, str, chiffre
  34.   if chiffre = void then set chiffre = pDefaultKey
  35.   return baDecryptText( str ,  chiffre)
  36. end
  37.  
  38.  
  39.  
  40.  
  41.  
  42. on xor me, num1,num2
  43.   if not(integerP(num1) and integerP(num2)) then
  44.     return #error
  45.   end if
  46.   
  47.   set magnitude = 1
  48.   set theMin = min(num1,num2)
  49.   set theMax = max(num1,num2)
  50.   set xored = 0
  51.   
  52.   repeat while theMin
  53.     set lastDigitXor = ((theMin mod 2 + theMax mod 2) mod 2)
  54.     set xored = xored + lastDigitXor * magnitude
  55.     set magnitude = magnitude * 2
  56.     set theMax = theMax / 2
  57.     set theMin = theMin / 2
  58.   end repeat
  59.   
  60.   set xored = xored + theMax * magnitude
  61.   
  62.   return xored
  63. end xor
  64.  
  65.  
  66.  
  67. on Chiffre me, text, key
  68.   if key = void then set key = pDefaultKey
  69.   set myActKey = 1
  70.   set newText = ""
  71.   repeat with x = 1 to the number of chars in text
  72.     set newText = newText & numtochar(xor (me, chartonum(char x of text),chartonum(char myActKey of key)))
  73.     set myActKey = myActKey + 1
  74.     if myActKey > length(key) then set myActKey = 1
  75.   end repeat
  76.   return newText
  77. end Chiffre