我正在尝试使用Racket的加密库,使用16字节的密钥加密16字节的数据块。我期望得到一个16字节的输出块,但实际上我得到了32字节的输出块。当输入块为15字节时,输出块为16位。
#lang racket
(require (planet vyzo/crypto))
(bytes-length (encrypt cipher:aes-128-ecb
(string->bytes/latin-1 "0123456789ABCDEF") ; 16-byte key
(make-bytes 16) ; IV
(string->bytes/latin-1 "0123456789ABCDEF"))) ; 16-byte data
; -> 32
(bytes-length (encrypt cipher:aes-128-ecb
(string->bytes/latin-1 "0123456789ABCDEF") ; 16-byte key
(make-bytes 16)
(string->bytes/latin-1 "0123456789ABCDE"))) ; 15-byte data
; -> 16
我哪里做错了吗?这是由于填充引起的吗?
注意:我知道ECB模式存在问题,我的目标是实现CBC模式。