Code: Select all
echo "SUPERBIGSECRET" | openssl enc -aes-128-cbc -base64 -iv 20002000200020002000200020002000 -nosalt
Can anyone see what I'm doing wrong? Thanks.
Code: Select all
;; just an educational exercise
;; echo "SUPERBIGSECRET" | openssl enc -aes-128-cbc -base64 -iv 20002000200020002000200020002000 -nosalt
Procedure Bytes(asString$)
Define xAsHexString$, lengthOfRawBytes, *xAsRawBytes, k
xAsHexString$ = asString$
lengthOfRawBytes = Len(xAsHexString$)/2
*xAsRawBytes = AllocateMemory(lengthOfRawBytes)
For k=0 To lengthOfRawBytes-1
PokeA(*xAsRawBytes+k ,Val("$"+PeekS(@xAsHexString$ +(k*4) ,2)))
Next
ProcedureReturn *xAsRawBytes
EndProcedure
Procedure DeriveKey(pwd$) ;; openssl style for AES 128 CBC (uses MD5!)
UseMD5Fingerprint()
MD5$ = StringFingerprint(pwd$, #PB_Cipher_MD5, 0, #PB_Unicode)
*MD5Bytes = AllocateMemory(16)
*MD5Bytes = bytes(MD5$)
ShowMemoryViewer(*MD5Bytes, 16)
ProcedureReturn *MD5Bytes
EndProcedure
*iv= bytes("20002000200020002000200020002000") ;; iv must always be 16 bytes
pass$="abc1234" ;; key (not pass) must be 16 bytes for AES 128, 32 bytes for AES 256
; ShowMemoryViewer(@iv$, 16)
test1$ = "SUPERBIGSECRET"
*test2 = AllocateMemory(StringByteLength(test1$))
test3$ = Space(Len(test1$))
AESEncoder(@test1$, *test2, MemorySize(*test2) , DeriveKey(pass$), 128, *iv, #PB_Cipher_CBC)
b64$ = Base64Encoder(*test2, MemorySize(*test2))
Debug b64$ ;; should be "VRWqHjP23NtfjqhgWpVsXg=="