当我尝试使用此代码模板并加密由一些空字符组成的块时,其执行被中止。当我使用调试器并查看失败的原因时,我知道当附加空字符时,执行将中止。
任何人都可以建议我使用c ++解决方案成功解密,即使我遇到一个重要且必须解密的空字符。?
答案 0 :(得分:1)
std::string#size
通过查找null
字符来确定大小,即字节值为零。你最好使用std::vector
或更好的方法来确定大小。
如果要将密文存储为可读(可打印)文本,请使用base 64或hexadecimals等编码。对于存储在二进制文件或二进制流中,只要将输入/输出处理为二进制文件,就不需要这样做。
请注意,ECB模式在大多数情况下都不安全。您需要使用随机IV的CBC,或者如果可能的话,使用经过身份验证的模式,例如GCM,每个密钥具有唯一的IV。