在java中对字符串进行编码,然后在所有移动平台上进行解码。 如果我使用Base64 / AES,但他们在他们的平台上都有不同的实现 如何编码字符串然后它将在每个移动平台(Android,IOS,Windows,Mozilla,BlackBerry,J2ME电话)上解码
答案 0 :(得分:1)
正如评论中所述,base64和AES已经充分标准化,每个平台都将具有兼容的实现。
你必须确保一些事情:
将字符串转换为字节时始终使用相同的字符编码(反之亦然)。
在所有平台上使用相同的AES操作模式(例如CBC模式)和相同的填充(例如PKCS#7 [Java中的PKCS#5])。如果您可以选择明确说明您的选择,请不要依赖默认值。
如果您使用需要IV的模式,请确保将其正确传递到目标。为了获得最佳实践,请为每条消息使用随机IV。
使用相同的密钥。这可能听起来很愚蠢,但如果您从密码中获取密钥,则需要在每个平台上使用相同的机制。 PBKDF2是基于密码的密钥的理想选择(您需要使用相同的散列函数和迭代计数)。如果使用固定密钥,请确保以一致的方式从字符串表示转换为密钥字节。