2012-02-07 3 views
0

1) Я не мог найти реализацию Java где-нибудь для шифрования JCE AES, но кто-нибудь знает, если массив байтов, который он принимает в качестве аргумента, рассматривается как подписанный или без знака? Код я использую:Вопросы криптографии Java (шифрование AES-ECB)

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 подписанными байтов дают те же результаты, что и побитовое исключающее ИЛИ 2 беззнаковых байтов? Под этим я подразумеваю, что только представления бит будут одинаковыми. Я думаю, да, но просто хочу убедиться.

3) Несколько связанный вопрос 1, какие побитовые операции будут приводить к различным результатам между подписанными и неподписанными байтами?

+0

1) Я googled для 'site: docjar.org openjdk aes' и нашел это: [link] (http://www.docjar.org/html/api/com/sun/crypto/provider/AESCrypt. java.html). – martijno

ответ

3

AES рассматривает байты как чисто двоичные данные. Не как цифры, которые имеют знак или не имеют знака.

В Java нет беззнаковых байтов. Они всегда подписаны. Но знак имеет значение только тогда, когда вы делаете целую аритмуму на них.

Побитовые операторы описаны в Java tutorial.

+0

Спасибо за ответ. Это проясняет ситуацию. –

+0

На самом деле, целочисленное сложение, вычитание и умножение на подписанные и неподписанные числа одинакового размера дают одинаковые результаты (предполагая, что результат снова находится в этом типе номера и игнорирует любые переполнения/переносные биты). Только сравнение и разделение дают другие результаты. –

Смежные вопросы