문자열 입력을 암호화하는이 코드가 있습니다. 만약 내가 다른 장치에 대한 동일한 입력으로 암호화하는 경우 8.1 낮은 다음 동일한 가치를 얻을. 그러나 8.1 장치를 사용하려고하면 완전히 다른 문자열이 나타납니다. 예외가 발생하지 않습니다. KeyGenerator : AES를 사용하여 Android 8.1 암호화 업데이트를 찾았습니다. 어떻게 다른 장치 Os 값이 낮은 8.1 동일한 값을 생성하도록 수정할 수 있습니까?Android Cipher는 Android 8.1에서 암호화합니다.
public static String cryptAESGungHo(String input)
{
byte[] gh_key = getKeyGungho("gh_key").getBytes();
byte[] gh_iv = getKeyGungho("gh_iv").getBytes();
IvParameterSpec ivSpecs = new IvParameterSpec(gh_iv);
byte[] crypted = null;
try{
SecretKeySpec skey = new SecretKeySpec(gh_key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey, ivSpecs);
try
{
crypted = cipher.doFinal(input.getBytes("UTF-16"));
}
catch(Exception e)
{}
}catch(Exception e){
}
String cr= new String(crypted);
return cr;
}
암호 해독에 128 또는 256 비트를 사용하고 있습니까? 1.1.3으로 업데이트하고 구현을 변경하여 256 비트를 사용하여 암호화 한 후 아무 문제없이 해독 할 수있었습니다. OS가 아니라 라이브러리에 문제가있는 것으로 보입니다. – Dilip
128 비트를 사용합니다. 난 여전히 해독 할 수있어. 그러나 문자열 반환은 다른 OS –
과 동일하지 않으므로 256 비트로 변경하고 다시 시도해보십시오. – Dilip