Это только мое предположение, но я думаю, что причина в вашем ключевом происхождении.Я не являюсь разработчиком на 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 () "Пересматривает этот случайный объект. Данное семя дополняет, а не заменяет существующее семя."
Я предполагаю, что начальное состояние ГСЧ различно для каждой системы / платформы, и, следовательно, оно дает вам разные результаты.Вам следует исправить вывод ключа на что-то более стандартное и непротиворечивое или использовать уже установленную криптографическую систему, такую как PGP, в библиотеках Bouncy Castle.