Skip to main content

I need to encrypt a string with the aes-256-cbc. My encryption is not matching what the other end needs which is a php endpoint.  In the documentation there was definitely a statement that makes me think I did at least one thing wrong but I am not sure.  Converting the aeskey to a hexidecimal format is what I think I may not understand. You see that I am taking each character in aeskey and building a string of the hex values for the character.  Below is a bit of the code for the encryption.  Once again I am missing something. Thanks all.

BASE.JSON = '{"customer_id":"1000"}'
ALG = "aes-256-cbc"
ACT=1
AESKEY= "31e92H1^FiERFgv7^nXg6DfC66rGpFb7"
GOSUB HEX.AES.KEY
IV.HEX = "31313131313131313131313131313131"
RESULT=""
RES =  ENCRYPT(ALG,ACT,BASE.JSON,1,AESKEY,1,3,"",IV.HEX,RESULT,1)
DEBUG
STOP
HEX.AES.KEY: 
NKEY=""
KEY.LEN = LEN(AESKEY)
FOR X = 1 TO KEY.LEN
  KL = AESKEY[X,1]
  HKL = OCONV(KL,'MX')
  NKEY:=HKL
NEXT X
AESKEY = NKEY
RETURN



------------------------------
[Gary] [Rhodes]
[Universe Developer]
[NPW Companies]
[Hialeah] [FL] [USA]
------------------------------

I need to encrypt a string with the aes-256-cbc. My encryption is not matching what the other end needs which is a php endpoint.  In the documentation there was definitely a statement that makes me think I did at least one thing wrong but I am not sure.  Converting the aeskey to a hexidecimal format is what I think I may not understand. You see that I am taking each character in aeskey and building a string of the hex values for the character.  Below is a bit of the code for the encryption.  Once again I am missing something. Thanks all.

BASE.JSON = '{"customer_id":"1000"}'
ALG = "aes-256-cbc"
ACT=1
AESKEY= "31e92H1^FiERFgv7^nXg6DfC66rGpFb7"
GOSUB HEX.AES.KEY
IV.HEX = "31313131313131313131313131313131"
RESULT=""
RES =  ENCRYPT(ALG,ACT,BASE.JSON,1,AESKEY,1,3,"",IV.HEX,RESULT,1)
DEBUG
STOP
HEX.AES.KEY: 
NKEY=""
KEY.LEN = LEN(AESKEY)
FOR X = 1 TO KEY.LEN
  KL = AESKEY[X,1]
  HKL = OCONV(KL,'MX')
  NKEY:=HKL
NEXT X
AESKEY = NKEY
RETURN



------------------------------
[Gary] [Rhodes]
[Universe Developer]
[NPW Companies]
[Hialeah] [FL] [USA]
------------------------------

This might be your KeyAction. Try 1 or 2 instead of 3.

Posted: 08-19-2023 18:21



------------------------------
Doug Averch
Owner
U2 Logic
------------------------------


I need to encrypt a string with the aes-256-cbc. My encryption is not matching what the other end needs which is a php endpoint.  In the documentation there was definitely a statement that makes me think I did at least one thing wrong but I am not sure.  Converting the aeskey to a hexidecimal format is what I think I may not understand. You see that I am taking each character in aeskey and building a string of the hex values for the character.  Below is a bit of the code for the encryption.  Once again I am missing something. Thanks all.

BASE.JSON = '{"customer_id":"1000"}'
ALG = "aes-256-cbc"
ACT=1
AESKEY= "31e92H1^FiERFgv7^nXg6DfC66rGpFb7"
GOSUB HEX.AES.KEY
IV.HEX = "31313131313131313131313131313131"
RESULT=""
RES =  ENCRYPT(ALG,ACT,BASE.JSON,1,AESKEY,1,3,"",IV.HEX,RESULT,1)
DEBUG
STOP
HEX.AES.KEY: 
NKEY=""
KEY.LEN = LEN(AESKEY)
FOR X = 1 TO KEY.LEN
  KL = AESKEY[X,1]
  HKL = OCONV(KL,'MX')
  NKEY:=HKL
NEXT X
AESKEY = NKEY
RETURN



------------------------------
[Gary] [Rhodes]
[Universe Developer]
[NPW Companies]
[Hialeah] [FL] [USA]
------------------------------

I want to follow up on my own question. I was able to accomplish my task. The original question I had was to make sure I correctly interpreted one of the statements in the documentation and I did.  I did create the hexadecimal string correctly.   I took some irrelevant code out but my code is below. This program takes some json and encrypts it before launching a web page that will decrypt it and display it in a browser. As you can see the end point is a php site and I don't know what functions they are using for decryption.  We both have a keys to properly encrypt and decrypt the message to see the json.

ESC = CHAR(27);STX=CHAR(2);CR = CHAR(13)
STMT = ESC:STX:"<"
BASE.JSON='{"customer_id":"1000","name":"Best Customer","address":"111 Main st","city":"Anywhere","state":"CA","zip":"22222"}'
*
ALG = "aes-256-cbc"
ACT=5
AESKEY= "11111111111111111111111111111111"
GOSUB HEX.AES.KEY
GOSUB GEN.IV
RESULT=""
RES =  ENCRYPT(ALG,ACT,BASE.JSON,1,AESKEY,1,3,"",IV.HEX,RESULT,1)
DAT = RESULT:"::":IV
RESULT=""
ERES = ENCODE("BASE64A",1,DAT,1,RESULT,1)
ENDPOINT = "https://api.com/p1/p2/p3.php?data="
URL=ENDPOINT:RESULT
STMT:=URL:CR
CRT STMT
*
DEBUG
STOP
GEN.IV: 
IV=""
IV.HEX=""
FOR X = 1 TO 16
  RN = RND(93)
  RN+=32
  C = CHAR(RN)
  HC = OCONV(C,'MX')
  IV:=C
  IV.HEX:=HC
NEXT X
RETURN
HEX.AES.KEY: 
NKEY=""
KEY.LEN = LEN(AESKEY)
FOR X = 1 TO KEY.LEN
  KL = AESKEY[X,1]
  HKL = OCONV(KL,'MX')
  NKEY:=HKL
NEXT X
AESKEY = NKEY
RETURN



------------------------------
[Gary] [Rhodes]
[Universe Developer]
[NPW Companies]
[Hialeah] [FL] [USA]
------------------------------