base64算法具有C 因子的多重结果

Base64 algorithm with multiple result of a factor in C++

本文关键字:结果 算法 base64      更新时间:2023-10-16

我有以下问题:我需要将特定内容转换为base64以防止字符的某些问题,在此转换之后,我需要用一个AES算法加密此数据。长度为16。问题发生在base64算法的结果返回响应的大小不是16个倍数的响应时,考虑到原始内容的大小是16的倍数。我如何避免此问题。?

pad base4编码的结果为16的倍数。

base64编码器使用每个字符6位编码您的8位数据,因此,对于输入数据的每3个字节,您就会获得4个字节的输出数据(加上填充到4个字节边界)。因此,传递给AES算法的数据大小可能具有16的长度。

请检查您的AES库的文档 - 如果您调用最后一块数据的特殊功能(例如,openssl中的EVP_EncryptFinal_ex),它很有可能在内部进行处理。另一个解决方案是在加密之前将数据粘贴到代码中的16字节边界。

大多数AES实现都支持填充,例如PKCS#7(NéePKCS#5)。这将在加密时添加所需的填充字节,然后删除解密。

aes是基于数据的函数,因此接受任何字节,因此在加密之前不需要Base64编码。加密的数据仅是字节,而不是字符,因此可能需要根据使用诸如可打印字符之类的用法来对输出进行编码。