如何计算 RAW 中的字节数以生成 16、24、32 字节以用于 AES 加密

How to count the bytes in RAW to make 16,24,32 bytes to use with AES encryption

我正在尝试制作一个 R 代码来做一些事情来存储敏感数据,直到一切正常。 所以,我的问题是密文和密钥的字节数,如何有效地制作密钥和密文的RAW 16,24或32?

library(digest)

key <- charToRaw("keymusbe162432bytes")
aes <- digest::AES(key, mode="ECB")
pass1 <- paste0(pass,"textHereIsNotTheSame")
rawcypher <- charToRaw(pass1)
aes$encrypt(rawcypher)
aes$decrypt(aes$encrypt(raw), raw=FALSE)
Error in digest::AES(key, mode = "ECB") : 
  AES only supports 16, 24 and 32 byte keys

根据?AES

key - The key as a 16, 24 or 32 byte raw vector for AES-128, AES-192 or AES-256 respectively.

这意味着如果它不完全是 16 或 24 或 32,将导致错误

AES(as.raw(1:16), mode = "ECB")
#AES cipher object; mode ECB key size 16 

AES(as.raw(1:17), mode = "ECB")

Error in AES(as.raw(1:17), mode = "ECB") : AES only supports 16, 24 and 32 byte keys

AES(as.raw(1:24), mode = "ECB")
#AES cipher object; mode ECB key size 24 

使用OP的代码,我们可以将字符设置为16或24

key <- charToRaw("keymusbe162432bytessssss")
AES(key, mode = 'ECB')
#AES cipher object; mode ECB key size 24