base64算法具有C 因子的多重结果
Base64 algorithm with multiple result of a factor in C++
我有以下问题:我需要将特定内容转换为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编码。加密的数据仅是字节,而不是字符,因此可能需要根据使用诸如可打印字符之类的用法来对输出进行编码。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- 是否可以使用 Wojciech Mula 算法将 __m256i 个 32 位字而不是 4 个 64 位字存储为弹出计数和结果?
- 选择排序算法生成无序结果
- 使用算法中的插入函数将元素插入空容器中,未给出预期的结果
- 微小加密算法实现会产生意想不到的结果
- 为什么我的Cooley-Tukey和蛮力(傅立叶)算法给出的结果非常不同
- 为什么在 C++ 中实现高斯勒让德算法没有产生结果
- 反向 Cuthill-McKee 算法:在 Matlab 和提升实现中具有无与伦比的结果
- base64算法具有C 因子的多重结果
- 排序算法给出错误的结果
- 使用Dijkstra算法找到最佳路径的不可预测的结果
- 使用if循环排序时出现意外结果-糟糕的算法
- 我的算法是正确的,但有些结果是错误的?(c++)
- Random_shuffle算法-在没有随机生成器函数的情况下产生相同的结果
- 查找可能不返回任何结果的最佳匹配的算法
- C++:查找直角三角形算法没有得到预期的结果
- 我必须训练维奥拉-琼斯算法与我的数据库,以获得准确的结果