这只是我的猜测,但我认为原因是您的关键推导。我不是真正的Java开发人员,因此我可能无法正确理解代码。
加密和解密时,此代码始终调用getRawKey()。getRawKey()看起来像需要一个称为种子或您的共享机密的东西,并用它来计算新的随机密钥来进行实际的加密/解密。
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); sr.setSeed(seed); kgen.init(128, sr); // 192 and 256 bits may not be available SecretKey skey = kgen.generateKey();根据在这里找到的Java文档,setSeed()“对这个随机对象进行加密。
给定的种子补充而不是替换 现有的种子。”
我的猜测是,RNG的初始状态在每个系统/平台上都不同,因此可以为您提供不同的结果。您应该将密钥派生修正为更标准,更一致的内容,或者使用已经建立的加密系统,例如Bouncy
Castle库中的PGP。



