24.12.2020, 09:20
(This post was last modified: 24.12.2020, 19:28 by benanderson_475.)
(24.12.2020, 08:58)admin Wrote: You can use loghex(data) to display binary data as hex. The receiving part of this example is incomplete. First 16 bytes of the reply contain the encrypted IV then one or more 16 byte blocks should follow. Receiving should stop if a decrypted block contains \n character.ok i understand now, so if i read 32 bytes then split into 2 local var then use the iv in the first 16 bytes with the aes ecb, i will get the decrypted response then i need to split the string at \n to receive the full response
i have it with the below
Code:
reply = sock:receive(32)
res_iv = string.sub(reply, 0, 16)
enc_res = string.sub(reply, 17, 32)
-- decript iv
local aes_128_ecb, err = aes:new(key, nil, aes.cipher(128, 'ecb'), { iv = string.rep('\0', 16) }, nil, 0)
local ivdec = aes_128_ecb:decrypt(res_iv)
-- decrypt encryped reply
local aes_128_cbcc, err = aes:new(key, nil, aes.cipher(128, 'cbc'), { iv = ivdec}, nil, 0)
local datadec = aes_128_cbcc:decrypt(enc_res)
loghex(datadec)