Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TOTP 100% qb64 Yup - sorta LOL
#7
(06-03-2025, 05:40 AM)aadityap0901 Wrote: I have an AES clone attached here, which I use in a password manager...
It is not perfectly AES, but similar to it.
Here is my attempt.. it is pretty solid, gets rid of the dead wieght at the end. I noticed yours had some unprintables. maybe we can work together.. see if we can get a aes clone
Pretty basic
Code: (Select All)
secretMessage = SleeperCrypt$ ( "hello world", key, "e"["d"])


What it DOES NOT do:
  • GF(2^8) math (for mixcolumns) Way to slow for qb64
  • Bit shifts > 1 bit  I did find a way to emulate SHL/SHR after I did this, but for this simple script it does not do it
  • Byte masking   

Code: (Select All)

DIM SHARED SBox(0 TO 255) AS INTEGER

SUB InitSBox
    DIM sData AS STRING
    DIM i AS INTEGER

'had to redo all this because qb64 does not do:
' sData = sData + CHR$(&H63, &H7C, &H77, &H7B, &HF2, &H6B, &H6F, &HC5, &H30, &H1, &H67, &H2B, &HFE, &HD7, &HAB, &H76)


    sData = ""
    sData = sData + CHR$(&H63) + CHR$(&H7C) + CHR$(&H77) + CHR$(&H7B) + CHR$(&HF2) + CHR$(&H6B) + CHR$(&H6F) + CHR$(&HC5)
    sData = sData + CHR$(&H30) + CHR$(&H01) + CHR$(&H67) + CHR$(&H2B) + CHR$(&HFE) + CHR$(&HD7) + CHR$(&HAB) + CHR$(&H76)
    sData = sData + CHR$(&HCA) + CHR$(&H82) + CHR$(&HC9) + CHR$(&H7D) + CHR$(&HFA) + CHR$(&H59) + CHR$(&H47) + CHR$(&HF0)
    sData = sData + CHR$(&HAD) + CHR$(&HD4) + CHR$(&HA2) + CHR$(&HAF) + CHR$(&H9C) + CHR$(&HA4) + CHR$(&H72) + CHR$(&HC0)
    sData = sData + CHR$(&HB7) + CHR$(&HFD) + CHR$(&H93) + CHR$(&H26) + CHR$(&H36) + CHR$(&H3F) + CHR$(&HF7) + CHR$(&HCC)
    sData = sData + CHR$(&H34) + CHR$(&HA5) + CHR$(&HE5) + CHR$(&HF1) + CHR$(&H71) + CHR$(&HD8) + CHR$(&H31) + CHR$(&H15)
    sData = sData + CHR$(&H04) + CHR$(&HC7) + CHR$(&H23) + CHR$(&HC3) + CHR$(&H18) + CHR$(&H96) + CHR$(&H05) + CHR$(&H9A)
    sData = sData + CHR$(&H07) + CHR$(&H12) + CHR$(&H80) + CHR$(&HE2) + CHR$(&HEB) + CHR$(&H27) + CHR$(&HB2) + CHR$(&H75)
    sData = sData + CHR$(&H09) + CHR$(&H83) + CHR$(&H2C) + CHR$(&H1A) + CHR$(&H1B) + CHR$(&H6E) + CHR$(&H5A) + CHR$(&HA0)
    sData = sData + CHR$(&H52) + CHR$(&H3B) + CHR$(&HD6) + CHR$(&HB3) + CHR$(&H29) + CHR$(&HE3) + CHR$(&H2F) + CHR$(&H84)
    sData = sData + CHR$(&H53) + CHR$(&HD1) + CHR$(&H00) + CHR$(&HED) + CHR$(&H20) + CHR$(&HFC) + CHR$(&HB1) + CHR$(&H5B)
    sData = sData + CHR$(&H6A) + CHR$(&HCB) + CHR$(&HBE) + CHR$(&H39) + CHR$(&H4A) + CHR$(&H4C) + CHR$(&H58) + CHR$(&HCF)
    sData = sData + CHR$(&HD0) + CHR$(&HEF) + CHR$(&HAA) + CHR$(&HFB) + CHR$(&H43) + CHR$(&H4D) + CHR$(&H33) + CHR$(&H85)
    sData = sData + CHR$(&H45) + CHR$(&HF9) + CHR$(&H02) + CHR$(&H7F) + CHR$(&H50) + CHR$(&H3C) + CHR$(&H9F) + CHR$(&HA8)
    sData = sData + CHR$(&H51) + CHR$(&HA3) + CHR$(&H40) + CHR$(&H8F) + CHR$(&H92) + CHR$(&H9D) + CHR$(&H38) + CHR$(&HF5)
    sData = sData + CHR$(&HBC) + CHR$(&HB6) + CHR$(&HDA) + CHR$(&H21) + CHR$(&H10) + CHR$(&HFF) + CHR$(&HF3) + CHR$(&HD2)
    sData = sData + CHR$(&HCD) + CHR$(&H0C) + CHR$(&H13) + CHR$(&HEC) + CHR$(&H5F) + CHR$(&H97) + CHR$(&H44) + CHR$(&H17)
    sData = sData + CHR$(&HC4) + CHR$(&HA7) + CHR$(&H7E) + CHR$(&H3D) + CHR$(&H64) + CHR$(&H5D) + CHR$(&H19) + CHR$(&H73)
    sData = sData + CHR$(&H60) + CHR$(&H81) + CHR$(&H4F) + CHR$(&HDC) + CHR$(&H22) + CHR$(&H2A) + CHR$(&H90) + CHR$(&H88)
    sData = sData + CHR$(&H46) + CHR$(&HEE) + CHR$(&HB8) + CHR$(&H14) + CHR$(&HDE) + CHR$(&H5E) + CHR$(&H0B) + CHR$(&HDB)
    sData = sData + CHR$(&HE0) + CHR$(&H32) + CHR$(&H3A) + CHR$(&H0A) + CHR$(&H49) + CHR$(&H06) + CHR$(&H24) + CHR$(&H5C)
    sData = sData + CHR$(&HC2) + CHR$(&HD3) + CHR$(&HAC) + CHR$(&H62) + CHR$(&H91) + CHR$(&H95) + CHR$(&HE4) + CHR$(&H79)
    sData = sData + CHR$(&HE7) + CHR$(&HC8) + CHR$(&H37) + CHR$(&H6D) + CHR$(&H8D) + CHR$(&HD5) + CHR$(&H4E) + CHR$(&HA9)
    sData = sData + CHR$(&H6C) + CHR$(&H56) + CHR$(&HF4) + CHR$(&HEA) + CHR$(&H65) + CHR$(&H7A) + CHR$(&HAE) + CHR$(&H08)
    sData = sData + CHR$(&HBA) + CHR$(&H78) + CHR$(&H25) + CHR$(&H2E) + CHR$(&H1C) + CHR$(&HA6) + CHR$(&HB4) + CHR$(&HC6)
    sData = sData + CHR$(&HE8) + CHR$(&HDD) + CHR$(&H74) + CHR$(&H1F) + CHR$(&H4B) + CHR$(&HBD) + CHR$(&H8B) + CHR$(&H8A)
    sData = sData + CHR$(&H70) + CHR$(&H3E) + CHR$(&HB5) + CHR$(&H66) + CHR$(&H48) + CHR$(&H03) + CHR$(&HF6) + CHR$(&H0E)
    sData = sData + CHR$(&H61) + CHR$(&H35) + CHR$(&H57) + CHR$(&HB9) + CHR$(&H86) + CHR$(&HC1) + CHR$(&H1D) + CHR$(&H9E)
    sData = sData + CHR$(&HE1) + CHR$(&HF8) + CHR$(&H98) + CHR$(&H11) + CHR$(&H69) + CHR$(&HD9) + CHR$(&H8E) + CHR$(&H94)
    sData = sData + CHR$(&H9B) + CHR$(&H1E) + CHR$(&H87) + CHR$(&HE9) + CHR$(&HCE) + CHR$(&H55) + CHR$(&H28) + CHR$(&HDF)
    sData = sData + CHR$(&H8C) + CHR$(&HA1) + CHR$(&H89) + CHR$(&H0D) + CHR$(&HBF) + CHR$(&HE6) + CHR$(&H42) + CHR$(&H68)
    sData = sData + CHR$(&H41) + CHR$(&H99) + CHR$(&H2D) + CHR$(&H0F) + CHR$(&HB0) + CHR$(&H54) + CHR$(&HBB) + CHR$(&H16)

    FOR i = 0 TO 255
        SBox(i) = ASC(sData, i + 1)
    NEXT
END SUB


FUNCTION SleeperCrypt$ (plainText AS STRING, keyString AS STRING, method AS STRING)
    DIM inputText AS STRING
    inputText = plainText

    DIM result AS STRING
    DIM i AS INTEGER, j AS INTEGER, round AS INTEGER
    DIM value AS INTEGER, keyByte AS INTEGER, keyPos AS INTEGER

    DIM blockSize AS INTEGER: blockSize = 16

    ' Pad key to at least blockSize
    IF LEN(keyString) < blockSize THEN
        DO WHILE LEN(keyString) < blockSize
            keyString = keyString + keyString
        LOOP
    END IF
    keyString = LEFT$(keyString, blockSize)

    method = LCASE$(method)
    result = plainText

    FOR round = 1 TO 5 ' Do 5 rounds for added strength
        inputText = result
        result = ""

        FOR i = 1 TO LEN(inputText)
            keyPos = ((i - 1) MOD blockSize) + 1
            keyByte = ASC(keyString, keyPos)
            value = ASC(inputText, i)

            IF method = "e" THEN
                value = value XOR keyByte
                value = (value * 2) AND 255 ' Simulate ROL1
                value = SBox(value)
            ELSE
                ' Reverse S-Box
                FOR j = 0 TO 255
                    IF SBox(j) = value THEN value = j: EXIT FOR
                NEXT
                value = (value \ 2) OR ((value AND 1) * 128) ' Simulate ROR1
                value = value XOR keyByte
            END IF

            result = result + CHR$(value)
        NEXT
    NEXT

    SleeperCrypt$ = result
END FUNCTION
3 out of 2 people have trouble with fractions

Reply


Messages In This Thread
TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-02-2025, 05:51 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-02-2025, 08:23 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-02-2025, 08:45 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-03-2025, 05:26 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-03-2025, 12:00 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Jack - 06-03-2025, 07:10 PM
RE: TOTP 100% qb64 Yup - sorta LOL - by Ra7eN - 06-04-2025, 04:38 PM



Users browsing this thread: 2 Guest(s)