2012-02-07 16 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)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

実際には、同じサイズの符号付きおよび符号なし数の整数加算、減算、および乗算は同じ結果をもたらします(結果はこの数値型にあり、オーバーフロー/キャリー・ビットは無視されます)。比較と除算だけが他の結果をもたらす。 –