Не имея возможности увидеть код, используемый для шифрования, невозможно определить, правильно ли вы поступаете.У меня очень похожий код в приложении для Android, и он отлично работает.Разница лишь в том, что я передаю javax.crypto.spec.IvParameterSpec
на Cipher.init()
.Кроме того, класс Android Base64 принимает аргумент flags для decode()
, но я не думаю, что это ваша проблема здесь.
У вас также есть небольшая ошибка в вашей функции getMD5()
, но она не должна бытьпроблема здесь, так как ваши ключи просты ASCII.Вы должны использовать длину байтового массива UTF-8, а не длину исходной строки при расчете дайджеста.
md.update(value.getBytes("utf-8"), 0, value.length());
Должно быть:
byte [] valueBytes = value.getBytes("utf-8");
md.update(valueBytes, 0, valueBytes.length);
РЕДАКТИРОВАТЬ: как Джеймс КПолк предложил, вы могли бы просто сделать:
md.update(value.getBytes("utf-8"));