1) Я нигде не смог найти реализацию Java для шифрования JCE AES, но кто-нибудь знает, считается ли байтовый массив, который он принимает в качестве аргумента, подписанным или неподписанным? Код, который я использую:
public static byte [] ecbAesEncrypt(byte [] key, byte [] currentVector) {
SecretKeySpec keySpec = null;
Cipher cipher = null;
byte [] encryptedValue = null;
try {
keySpec = new SecretKeySpec(key, "AES");
cipher = Cipher.getInstance("AES/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
encryptedValue = cipher.doFinal(currentVector);
}
catch (Exception e) {
e.printStackTrace();
return null;
}
if (DEBUG)
printHex("AES-ECB encrypt: ", encryptedValue);
return encryptedValue;
}
2) Будет ли побитовое XOR 2 байтов со знаком давать те же результаты, что и побитовое XOR 2 байтов без знака? Под этим я подразумеваю, что только битовые представления будут одинаковыми. Я думаю, да, но просто хочу убедиться.
3) Отчасти связан вопрос 1: какие побитовые операции будут давать разные результаты между байтами со знаком и без знака?