我的方法是加密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