视频加密

本文介绍了一种简单的视频加密方法,通过将视频文件的数据流前100个字节中的每个字节与其下标进行异或运算来实现加密。该方法实现简单且加密速度快,仅需对文件进行一次读写操作即可完成加密过程。测试表明,当加密长度小于2字节时,加密效果不明显;而大于等于2字节时则能有效加密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、将视频文件的数据流前100个字节中的每个字节与其下标进行异或运算。解密时只需将加密过的文件再进行一次异或运算即可。

加密解密方法如下:

private final int REVERSE_LENGTH = 100;
/**
 * 加解密
 *
 * @param strFile 源文件绝对路径
 * @return
 */
private boolean encrypt(String strFile) {
    int len = REVERSE_LENGTH;
    try {
        File f = new File(strFile);
        RandomAccessFile raf = new RandomAccessFile(f, "rw");
        long totalLen = raf.length();

        if (totalLen < REVERSE_LENGTH)
            len = (int) totalLen;

        FileChannel channel = raf.getChannel();
        MappedByteBuffer buffer = channel.map(
                FileChannel.MapMode.READ_WRITE, 0, REVERSE_LENGTH);
        byte tmp;
        for (int i = 0; i < len; ++i) {
            byte rawByte = buffer.get(i);
            tmp = (byte) (rawByte ^ i);
            buffer.put(i, tmp);
        }
        buffer.force();
        buffer.clear();
        channel.close();
        raf.close();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}
        此方法加密耗时很短。

        加密时用到了MappedByteBuffer类。具体含义看此博客http://my.oschina.net/swearyd7/blog/167663?fromerr=dzP0A3fc  

        测试过程中,将REVERSE_LENGTH 这个常量设置为1,只加密视频文件的前1个字节,没有任何效果。改成2个字节后,加密后的视频就无法播放了,大于等于2个字节都能加密成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值