У меня есть код для шифрования AES, который реализован ниже.И он работает правильно до 15-значных чисел, но тот же код не показывает правильный результат для 16-значного числа.Например "4111111111111111".Я не знаю, почему это происходит, это шифрование 16-значного числа, но когда я пытаюсь расшифровать его, оно показывает неправильный результат
Я перепробовал почти все алгоритмы, но не смог.
Заранее спасибо.
public class AES {
private static SecretKeySpec secretKey;
private static byte[] key;
public static void setKey(String myKey)
{
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt, String secret)
{
try
{
setKey(secret);
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.encodeToString((cipher.doFinal(strToEncrypt.getBytes("UTF-8"))),Base64.DEFAULT);
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
Код моей активности
public class MainActivity extends AppCompatActivity
{
private static final String Password = "ABCDEFGHIJKLMNOP";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String toEncode = "4111111111111111";
String enC ;
enC = AES.encrypt(toEncode, Password);
System.out.println("ENC: " + enC );
}
}