我有一个现有的 c++ 代码,它将加密一个字符串。现在我在 . 一些加密字符串是匹配的。有些是一两个字符不匹配。
我无法弄清楚为什么会这样。我在调试模式下运行这两个代码,直到他们调用他们的库都具有相同的密钥、盐、iv 字符串进行加密。
我知道即使单个字节填充更改会大幅修改加密字符串。但在这里我只是看到一两个字符发生了变化。这是一个示例(星号之间的粗体字符是不匹配的部分)
爪哇:
U2FsdGVkX18xMjM0NTY3OGEL9nxFlHrWvodMqar82NT53krNkqat0rrgeV5FAJFs1vBsZIJPZ08DJVrQ* Pw *yV15HEoyECBeAZ6MTeN+ZYHRitKanY5jiRU2J0KP0Fzola
C++:
U2FsdGVkX18xMjM0NTY3OGEL9nxFlHrWvodMqar82NT53krNkqat0rrgeV5FAJFs1vBsZIJPZ08DJVrQ* jQ *yV15HEoyECBeAZ6MTeN+ZYHRitKanY5jiRU2J0KP0Fzola
我正在使用 AES 加密。提供者是 SunJCE 1.6 版。我尝试将提供者更改为 Bouncy Castle。即使那样结果也是一样的。
增加了一个样本:
C++:
U2FsdGVkX18xMjM0NTY3O* I* /BMu11HkHgnkx+dLPDU1lbfRwb+aCRrwkk7e9dy++MK+/94dKLPXaZDDlWlA3gdUNyh/Fxv* oF *STgl3QgpS0XU=
爪哇:
U2FsdGVkX18xMjM0NTY3O* D* /BMu11HkHgnkx+dLPDU1lbfRwb+aCRrwkk7e9dy++MK+/94dKLPXaZDDlWlA3gdUNyh/Fxv* j9 *STgl3QgpS0XU=
更新:
根据评论,我觉得 base 64 加密是罪魁祸首。我在两个地方都使用了 Latin-1 字符集。还有什么我可以检查的