我有一个现有的c代码将加密一个字符串。现在我做了相同的加密。
一些加密的字符串是匹配的。有些在一个或两个字符不匹配。
我无法弄清楚为什么会发生这种情况。我在调试模式下运行这两个代码,直到调用它们的库都具有相同的密钥,salt,iv字符串加密。
我知道即使单字节填充更改将会严重修改加密字符串。但是在这里我只是看到一个或两个字符的变化。这是一个样本(星号之间的大写字符是错配)
Java的:
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=
Java的:
U2FsdGVkX18xMjM0NTY3O*D*/BMu11HkHgnkx+dLPDU1lbfRwb+aCRrwkk7e9dy++MK+/94dKLPXaZDDlWlA3gdUNyh/Fxv*j9*STgl3QgpS0XU=
更新:
根据评论,我觉得64加密是罪魁祸首。我在两个地方都使用Latin-1 char set。还有什么我可以检查