我在Java SE和Android项目上使用相同的代码。运行在Java和Android上的应用程序连接到相同的MQTT代理并交换消息。消息使用AES加密/解密。我有一个Java安全体系结构的经验非常少,所以我的问题是:Java和Android之间的加密/解密
1)我应该期待什么,如果我使用相同的密码算法,但来自不同供应商(一个Java和其他Android上的)?使用不同的提供程序解密用另一提供程序加密的消息是否自动表示该消息不会被成功解密?
2)什么是推荐的供应商使用,将允许Java和Android应用程序在这种情况下,正确的沟通?我在网上看到了一些答案,但有些答案相对较旧,所以我不确定它们是否仍然是最佳答案。
AES是标准。假设你使用的是同一个秘密,那么你正在使用哪个实现并不重要 – odedsh 2015-03-13 09:40:15
当算法未完全指定时,提供者之间当然存在差异。不要忘记指定操作模式和填充。不要使用'Cipher.getInstance( “AES”);',而是'Cipher.getInstance( “AES/CBC/PKCS5Padding”);'甚至更好的认证加密,如GCM或CCM是由BouncyCastle的提供。 – 2015-03-13 10:09:53
在Java SE上使用'BouncyCastle'和在Android上使用'SpongyCastle'。同一版本。 – EpicPandaForce 2015-03-13 10:25:25