tôi đang làm việc trên dự án năm cuối cùng của tôi trong JAVAâm thanh stegnography
1) giấu văn bản trong một hình ảnh
2) hình ảnh trong một hình ảnh
3) văn bản trong một tập tin âm thanh (WAVE)
tôi đã hoàn tất thành công 1) và 2) và đã đính kèm mã nguồn nếu có ai đó có thể cần. tôi đang gặp sự cố trong phiên bản thứ 3 tức là ẩn dữ liệu trong tệp âm thanh. Tôi tạo một audioinputstream ra khỏi một tệp sóng và đọc dữ liệu của nó thành một mảng byte nhưng nhiều thứ không rõ ràng, trong khi đọc tôi đoán là 44 byte đầu tiên là byte tiêu đề? (Vì tệp có định dạng WAVE) hoặc tiêu đề không được sao chép. Vấn đề là .... tại thời điểm giải mã một lần nữa tôi phải đọc dữ liệu từ tệp âm thanh mới được tạo trong một mảng byte. Và tôi không thể định vị các byte nơi tôi có dữ liệu ẩn.
Ai có thể cho tôi biết chính xác điều gì xảy ra khi chúng ta đọc dữ liệu vào một mảng byte từ một audioinputstream, tôi có nghĩa là những gì thực sự được đọc vào mảng byte?
File fileIn = new File("C:\\Users\\Rahul\\Desktop\\pro\\Don't Stay.wav");
AudioInputStream audioInputStream =
AudioSystem.getAudioInputStream(fileIn);
int avail= audioInputStream.available();
System.out.println("bytes available " +avail);
System.out.println(audioInputStream.markSupported());
int bytesPerFrame =
audioInputStream.getFormat().getFrameSize();
// Set an arbitrary buffer size of 1024 frames.
int numBytes = 1024 * bytesPerFrame;
byte[] audioBytes = new byte[numBytes];
audioInputStream.read(audioBytes);
byte btext[]=Stego_text("good morning!");
byte bcoded[]=steg.encoding(audioBytes,btext,0);
byte[] stg= a.decode_text(audioBytes);
String obtain= new String(stg);
System.out.println(">>>"+ obtain); //the hidden message gets successfully displayed here
try {
//
AudioSystem.write(audioInputStream, Type.WAVE, new File("C:\\Users\\Rahul\\Desktop\\pro\\Don't Stay_restored.wav"));
} catch (Exception e) {
e.printStackTrace();
}
byte[] audioBytesNew = new byte[numBytes];
audioInputStream.read(audioBytesNew);
byte[] stg1= a.decode_text(audioBytesNew);
String obtain1= new String(stg1);
System.out.println(">>>"+ obtain1); //the hidden message does not get displayed
nếu tôi giải mã các mảng byte chỉ sau khi chỉnh sửa, sau đó nó hoạt động tốt và hiển thị thông báo ẩn, nhưng sau khi một lần nữa tạo ra một mảng byte và đọc vào nó audioinputsream dữ liệu và sau đó giải mã rằng mảng byte .. nó không hoạt động. tôi tự hỏi tại sao? làm ơn giúp tôi.
Từ này là 'steganography. – EJP