我的方法是加密MP3文件,即使加密後,加密的文件可以與任何MP3播放器(如果你聽到的只是播放垃圾,那就OK了)。所以我打算將我的Mp3文件分割爲字節數組,然後使用我使用的加密方法更改幀(根據Mp3文件結構)。更改MP3文件字節
這裏是我用來獲取字節代碼:
public class Audio {
public static void main(String[] args) throws FileNotFoundException, IOException {
File file = new File("test.wmv");
FileInputStream fis = new FileInputStream(file);
//System.out.println(file.exists() + "!!");
//InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum); //no doubt here is 0
//Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
// Logger.getLogger(genJpeg.class.getName()).log(Level.SEVERE, null, ex);
}
byte[] bytes = bos.toByteArray();
byte temp ;
for(int i = 0 ; i < bytes.length ; i++)
{
System.out.println(bytes[i]);
}
//below is the different part
File someFile = new File("test2.wmv");
FileOutputStream fos = new FileOutputStream(someFile);
fos.write(bytes);
fos.flush();
fos.close();
}
這裏的東西,我的加密和改變字節應在框架部分吧?據我讀我們不能訪問位,我們可以改變的文件的最小部分是字節。所以我如何改變由位定義的幀?
我做了「google it」!而且我很困惑,如果任何人都能告訴我我會很滿意的方式。
謝謝!所以根據:[鏈接](http://en.wikipedia.org/wiki/MP3)每個頭是32位,這是4個字節。所以我應該離開標題,並改變你說的正確的數據字節? – Aerox
是的,不需要複雜的標題讀出。不要過早地優化。附加提示:要加密比特,請使用AES-CTR等流密碼模式,而不是分組密碼模式。流密碼的最後一步是一個非常適合加密比特的XOR。它不需要任何填充,但它確實需要獨特的IV(每個數據加密密鑰)。 –
謝謝你的幫助! – Aerox