如何使用C#隐藏mp3数据帧中的数据

读了标题之后,数据帧开始了,我想知道mp3播放器读取的数据帧大小是什么,这样如果我改变每个帧的单个位而不会对文件的声音造成太大影响,以及如何我可以改变一个位(最后一位),因此在C#中效果最小。 请帮我     
已邀请:
您正在寻找的技术称为“隐写术”。 它不是C#(这比人们想象的要复杂得多),但这是相关的..您可能希望使用p / invoke或将其移植到C#代码中。     
我也正在开发一个类似的项目...首先你必须了解mp3文件结构...我希望这个链接可以帮助你关于mp3文件结构...一旦你清楚文件结构它很漂亮很容易自己编写代码...将mp3文件作为流文件并从中提取每一帧(一旦你了解了mp3文件结构,这应该很简单......事实上,我花了几个小时的时间写一个代码来做那个)...以及关于你的算法的建议。一个5 MB的mp3文件或多或少有15,000个帧...所以,如果你想要每帧替换一点,你可以存储的最大数据是2KB ... 我尝试了相同但我每帧更改了一个BYTE ...这在结果文件中引入了一些噪音......有关如何减少噪音的任何建议......!?!?!??希望我的回答可以帮助你... :)     
我能够弄清楚并想出了我自己的算法,Rzr你所说的是对的。 mp3文件是高度压缩的文件,任何帧中的任何位变化都会引入巨大的噪音。 有办法解决这个问题,
Soln_1: Hide the text data and in any of the bit of each byte and reconstruct the frame using humming code 

Soln_2: which i was able to do it, using Layer III, BitRate=128000, SampleRate=441000, Padding=0
缺点:文件大小会增加,非预期用户无法预测,除非他有原始mp3文件的精确副本。 能够实现:没有噪音我能够在3mb mp3文件中隐藏高达5kb的文本数据 解决方法:
step1: scan every 8 bytes in each frame
step2: take a 8 bits from the text data
预先定义在每个帧中放置每个文本数据位的位置,例如:第四个位置。
step3:  check every 4th bit location of each byte of the frame is same as the each bit of the text data are same
例如。: 文本数据一个字节是
01110001
来自mp3数据帧的前8个字节
byte_1: 01101111 -->4th location bit is 0
byte_2: 01111111 -->4th location bit is 1
byte_3: 01111001 -->4th location bit is 1
byte_4: 01111011 -->4th location bit is 1
byte_5: 01100011 -->4th location bit is 0
byte_6: 01101100 -->4th location bit is 0
byte_7: 01101011 -->4th location bit is 0
byte_8: 01110011 -->4th location bit is 1
所以这个字节来自帧,每个
4th
位的位置与文本数据位相同。
Step4: note down the location of the byte in the mp3 data frame, in this case its "1" that is 1st location
如果来自mp3数据帧的字节与数据位不匹配,则跳过该字节并继续下一个字节,继续执行相同操作直到隐藏整个文本数据。
Step5:now take all the locations where the text data is present and add these as a byte to the data frame of mp3.
这是我能够成功实施的一个解决方案。     

要回复问题请先登录注册