2010-04-21 5 views
0

바이트 배열 ("skBytes")에서 트리플 DES 키를 만들지 만 삼중 DES 키 ("sk")에서 getEncoded를 호출하고 바이트 배열과 비교할 때 서로 다릅니다! 콘솔 출력을 보면 거의 동일합니다. "skBytes"와 정확히 같은 트리플 DES 키를 만드는 방법은 무엇입니까?바이트에서 3DES 키 만들기

byte[] skBytes = {(byte) 0x41, (byte) 0x0B, (byte) 0xF0, (byte) 0x9B, (byte) 0xBC, (byte) 0x0E, (byte) 0xC9, (byte) 0x4A, (byte) 0xB5, (byte) 0xCE, (byte) 0x0B, (byte) 0xEA, (byte) 0x05, (byte) 0xEF, (byte) 0x52, (byte) 0x31, (byte) 0xD7, (byte) 0xEC, (byte) 0x2E, (byte) 0x75, (byte) 0xC3, (byte) 0x1D, (byte) 0x3E, (byte) 0x61}; 
    DESedeKeySpec keySpec = new DESedeKeySpec(skBytes); 
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); 
    SecretKey sk = keyFactory.generateSecret(keySpec); 

    for(int i = 0; i < skBytes.length; i++) 
    { 
     System.out.println("(sk.getEncoded()[i], skBytes[i]) = (" + sk.getEncoded()[i] +", " + skBytes[i] + ")"); 
    } 

콘솔 출력 :

(sk.getEncoded()[i], skBytes[i]) = (64, 65) 
(sk.getEncoded()[i], skBytes[i]) = (11, 11) 
(sk.getEncoded()[i], skBytes[i]) = (-15, -16) 
(sk.getEncoded()[i], skBytes[i]) = (-101, -101) 
(sk.getEncoded()[i], skBytes[i]) = (-68, -68) 
(sk.getEncoded()[i], skBytes[i]) = (14, 14) 
(sk.getEncoded()[i], skBytes[i]) = (-56, -55) 
(sk.getEncoded()[i], skBytes[i]) = (74, 74) 
(sk.getEncoded()[i], skBytes[i]) = (-75, -75) 
(sk.getEncoded()[i], skBytes[i]) = (-50, -50) 
(sk.getEncoded()[i], skBytes[i]) = (11, 11) 
(sk.getEncoded()[i], skBytes[i]) = (-22, -22) 
(sk.getEncoded()[i], skBytes[i]) = (4, 5) 
(sk.getEncoded()[i], skBytes[i]) = (-17, -17) 
(sk.getEncoded()[i], skBytes[i]) = (82, 82) 
(sk.getEncoded()[i], skBytes[i]) = (49, 49) 
(sk.getEncoded()[i], skBytes[i]) = (-42, -41) 
(sk.getEncoded()[i], skBytes[i]) = (-20, -20) 
(sk.getEncoded()[i], skBytes[i]) = (47, 46) 
(sk.getEncoded()[i], skBytes[i]) = (117, 117) 
(sk.getEncoded()[i], skBytes[i]) = (-62, -61) 
(sk.getEncoded()[i], skBytes[i]) = (28, 29) 
(sk.getEncoded()[i], skBytes[i]) = (62, 62) 
(sk.getEncoded()[i], skBytes[i]) = (97, 97) 
+1

패리티 조정 중 ... – AOO

답변

5

DES 키는 56 비트이며이 8 바이트로 표현합니다. 각 바이트는 패리티 비트를 전달합니다. 트리플 DES 키는 함께 연결된 3 개의 DES 키입니다.

DESedeKeySpec으로 키를 만들 때 패리티가 조정됩니다. 따라서 동일한 인코딩 된 값을 얻으려면 적절한 패리티가있는 바이트를 제공해야합니다.

관련 문제