나, 데이터를 암호화하고 해독하는 java 메소드를 작성했습니다.cipertext - AES, Java의 파티션을 해독하는 방법
String message = "Hello world 123456";
// Creating Key. Key of size = 128
byte [] raw ={-49, -44, 51, -114, 58, 79, 83, -38, 107, 64, 67, -108, -52, 109, 85, 77};
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
// Encript
byte[] encrypted = cipher.doFinal(message.getBytes());
System.out.println("encripted: " + Arrays.toString(encrypted));
System.out.println("encripted: "+ asHex(encrypted));
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decript = cipher.doFinal(encrypted, 0, 32);
모든 것이 잘 작동합니다. 암호화 된 바이트 크기는 32입니다. 맞습니다. 하지만 부분을 부분적으로 dencrypt (차단 - 예를 들어 첫 번째 블록을 해독 한 다음 두 번째) 할 수 있습니까? 처음에는 16 바이트를, 2 바이트 째는 16 바이트 등으로 씁니다.
이 될 수 있습니다.
byte[] decript = cipher.doFinal(encrypted, 0, 16);
내가 같은 오류가 : 다른 단어에서
javax.crypto.BadPaddingException: Given final block not properly padded
을 내가 AES 암호 텍스트를 해독 할 수, 블록 차단?
업데이트 : 나는 비디오 파일을 암호화했습니다. 약 1GB입니다. 내 비디오 플레이어를 쓰고 싶습니다. 그러면 내 파일이 열립니다. 전체 비디오에 대해 설명을하면 메모리에 문제가있을 것입니다. 그래서 스트림 플레이어의 바이트를 내 플레이어에게 보냅니다 (차단할 블록). 이를 위해 AES를 사용할 수 있습니까?
왜 하시겠습니까? –
나는 비디오 파일을 암호화했다. 약 1GB입니다. 내 비디오 플레이어를 쓰고 싶습니다. 그러면 내 파일이 열립니다. 전체 비디오에 대해 설명을하면 메모리에 문제가있을 것입니다. 그래서 스트림 플레이어의 바이트를 내 플레이어에게 보냅니다 (차단할 블록). 이를 위해 AES를 사용할 수 있습니까? – grep
아니요, 항상 파일의 시작 부분부터 시작하지 않는 한 할 수 없습니다. http://en.wikipedia.org/wiki/Disk_encryption_theory – SLaks