视频文件简单加密解密

作者:超级管理员 更新时间:2017-08-17 17:56:33 来源:未知 点击:15642
本帖最后由windtalker1782于2016-02-2314:05:00编辑江湖救急~~求大神出手相救文件1:文本文件   1.txt ,文本内容  header文件2:.mp4视频文件    需
本帖最后由 windtalker1782 于 2016-02-23 14:05:00 编辑
江湖救急~~求大神出手相救


文件1:文本文件   1.txt ,文本内容  header
文件2:.mp4视频文件    

需求1:将  2个文件通过流的形式整合在一起,把1.txt内容放在.mp4文件的头,使.mp4不能正常播放
需求2:将不能播放的.mp4后增加的1.txt的内容去掉,使其可以正常播放

也就是一个最简单的加密解密的过程。
不知道用Swift如何实现。

下边提供JAVA方法,可参考


package test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Test {

public static final String PATH="E:\\workspaces\\testwx\\files";

/**
 * 加密
 * @throws Exception
 */
public void encode()throws Exception {

//获取密钥文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(PATH+"\\password")));

byte[] passwd=new byte[bis.available()];
bis.read(passwd);
bis.close();
//获取原视频文件
BufferedInputStream bisOld = new BufferedInputStream(new FileInputStream(new File(PATH+"\\asd.mp4")));
//输出加密后的流文件
BufferedOutputStream bosNew = new BufferedOutputStream(new FileOutputStream(new File(PATH+"\\encode\\asd_new")));
//写入密钥
bosNew.write(passwd);

byte[] buffer=new byte[1024];
int len=0;
//加密文件
while((len=bisOld.read(buffer))>0){
bosNew.write(buffer, 0, len);
}

bosNew.flush();
bosNew.close();

bisOld.close();

}

/**
 * 解密
 * @throws Exception
 */
public void decode()throws Exception {
//获取密钥文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(PATH+"\\password")));
int passwdLen=bis.available();
byte[] passwd=new byte[passwdLen];
bis.close();
//获取加密文件
BufferedInputStream bisOld = new BufferedInputStream(new FileInputStream(new File(PATH+"\\encode\\asd_new")));
//输出解密后流文件
BufferedOutputStream bosNew = new BufferedOutputStream(new FileOutputStream(new File(PATH+"\\decode\\asd.mp4")));
//获取密钥
bisOld.read(passwd);
passwd=null;

byte[] buffer=new byte[1024];
int len=0;

while((len=bisOld.read(buffer))>0){
bosNew.write(buffer, 0, len);
}

bosNew.flush();
bosNew.close();

bisOld.close();
}

public static void main(String[] args)throws Exception {
Test t = new Test();
//加密
t.encode();
//解密
t.decode();
}

}

-------------------------------
-------------------------------
求助啊
-------------------------------
-------------------------------
java代码大致是:password是一个文本文件,asd.mp4是一个视频文件,sd_new是一个加密后的视频文件。
加密流程:打开password文本文件,写入sd_new中,然后再打开asd.mp4视频文件,再写入sd_new中。
解密过程:打开password文件,再打开sd_new文件,然后把从sd_new文件中前面的若干个字节(长度是password文件的长度)去掉,后面的内容就是真正的视频内容了。把后面真正的视频内容写入到asd.mp4文件中。
-------------------------------
需求1,太简单了啊! 一条DOS命令就OK了,哈哈。。。

Copy  /b   1.txt+2.mp4   3.mp4

得到的3.mp4无法正常播放了!

然后,这种方法很容易被破解,只要用UltraEdit比较一下加密的视频与正常的视频文件头,一看便知! 只能暂时欺骗一下外行。
你不如再在正常的视频文件中(譬如:总字节数的1/3处,随便插入固定的20个字节),这样即使去掉了文件头,仍然无法播放!解密者想要找到那20个多余的字节,难度很大,哈哈。。。

推荐阅读

热门内容

社区福利----人邮异步CSDN赠书第二

今第二期新书赠送活动来啦,如果你热爱读书...

iOS集成支付宝 支付时调用OPENSS

读取私钥阶段失败。集成的是新版支付宝SD...

关于oc中的指针数组什么的在swift下

in objective-c: for ...

【Qualcomm线下沙龙到会赠送30元

本帖最后由CSDNhanrui于2017...

社区福利----机械出版CSDN赠书第一

今天大Y我联合机械出版开启重磅新书赠送活...

揭秘共享单车中的物联网IOT技术应用!!

物联网开发免费公开课来啦,名额有限,手慢...

Xcode 模拟器不能正常运行app了

在模拟器上运行app提示 :The re...

更新xcode 8.0 尺寸分类问题

本帖最后由weixin_35824766...

想学IOS开发高阶一点的东西,从何开始

       学习,并从事IOS开发快两...

有奖话题:为物联网而生的Snapdrag

本帖最后由CSDNhanrui于2017...

最新内容

遇到一个Java时间转换的问题,求解答

将Long转换为Date,代码如下:Date x=new Date(381945...

如何用java获取指定进程的线程数量

如题!ps:   sigar有程序崩溃的风险,不能使用,求其他方法!------...

时间计算

计算下N个月第N周的星期几是多少号怎用Java代码实现...

ssm开发 jdk1.8遇到的问题

用JDK1.8所遇到的问题而用jdk1.7或者更低版本就没问题,这个是啥原因呢?...

请问拦截器basicStack是struts2的內建拦截器吗?

本帖最后由weixin_37628014于2017-08-1623:54:12编...

maven项目(ssh框架配置) no bean name "sessionFactory" defined

配置ssh框架(springmvc spring hibernate)时报异常n...

Mybatis 想使用selectKey 实现saveOrUpdate 功能

项目中想在插入数据之前查一遍数据库,存在的情况下更新,不存在的情况下就inser...

springMVC 控制器获取不到页面的值,显示空值项

以下是jsp页面的一部分代码

谁有ITeye账号,帮忙下载两个文件,ITeye系统升级,暂时无法注册,求助!!!!

http://www.iteye.com/topic/427397下载这两个麻烦...

htmlUnit用不了,求助

官网上直接拷贝过来的代码,结果helloWolrd都断言失败,版本2.23和2....

ssm框架运行出错,求大神指教

严重: Error configuring application listen...

求帮忙解决个"集合"的代码题

求大神帮忙给解决一下 谢谢了--------------------------...

如何在循环中获取名称不同的radio的值,在后台获取到

Button.setOnClickListener(this)问题

在一个listview里添加了三个Button如果用下面的写法:Button b...

各位朋友帮忙看下这js的问题

我有个登录页面,里面的js只执行第一个alert(0),那如果执行这个alert...

hibernate 请求快了就崩溃了

本帖最后由qq1274823301于2017-08-1612:00:13编辑hi...

cloud 初级问题

问题:代码:配置:-------------------------------...

验证码刷新失败

本帖最后由gounuoyu8028于2017-08-1600:26:16编辑验证...

spring的自动注入包导不进来

工程是在另外一台电脑上面拿过来的。-----------------------...

iBash4J部署时启动项目连接不上Redis,无法从JedisPool中获取连接!!!

这个是tomcat启动日志严重: Exception sending conte...