2012-02-07 3 views
0

1) Java 구현을 JCE AES 암호화의 어느 위치에서도 찾을 수 없지만 인수로 사용 된 바이트 배열이 부호가 있거나 부호가없는 것으로 처리되는지 알 수 있습니까? 내가 사용하는 코드는 다음과 같습니다자바 암호화 질문 (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 부호없는 바이트의 비트 XOR과 같은 결과를 얻을 것인가? 이것에 의해 나는 비트 표현이 동일하다는 것을 의미한다. 나는 네를 생각하고 있지만, 확실히하고 싶다.

3) 질문 1과 어떤 관련이 있는데, 어떤 비트 연산이 부호있는 바이트와 부호없는 바이트간에 서로 다른 결과를 생성합니까?

+0

1) 나는'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

실제로 동일한 크기의 부호있는 번호와 부호없는 번호의 정수 더하기, 빼기 및 곱하기는 동일한 결과를 제공합니다 (결과가이 숫자 유형에 속한 것으로 가정하고 오버플로/캐리 비트는 무시함). 비교와 구분 만이 다른 결과를줍니다. –