一种视频加密算法

     之前遇到一个需求,本地视频直接放在设备中,防止非法被再次利用,需要对视频进行一个简单的加密,于是本人想来一种奇怪的加密方法,加密分为两步,现对视频进行加密,然后将加密后的视频更改后缀名。好了话不多说,直接上代码。
以下代码是用来加密视频的:

 /**
     * 文件加解密
     *将视频文件的数据流前100个字节中的每个字节与其下标进行异或运算。
     *解密时只需将加密过的文件再进行一次异或运算即可。
     * @param strFile 源文件绝对路径
     * @return
     */
    private final int REVERSE_LENGTH = 100;
    private boolean EncryptAndDecode(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;
        }
    }

以下代码是用来修改后缀名的

//文件后缀名的修改

import java.io.*;
/**
 * JAVA实现的批量更改文件后缀名的程序。
 *
 * @author rommnn
 */
public class ExtBatchRename {
    /**
     * 修改程序。<br>
     * 内部递归调用,进行子目录的更名
     * @param path
     *          路径
     * @param from
     *          原始的后缀名,包括那个(.点)
     * @param to
     *          改名的后缀,也包括那个(.点)
     */
    public static void reName(String path, String from, String to) {
        File f = new File(path);
        File[] fs = f.listFiles();
        for (int i = 0; i < fs.length; ++i) {
            File f2 = fs[i];
            if (f2.isDirectory()) {
                reName(f2.getPath(), from, to);
            } else {
                String name = f2.getName();
                if (name.endsWith(from)) {
                    f2.renameTo(new File(f2.getParent() + "/" + name.substring(0, name.indexOf(from)) + to));
                }
            }
        }
    }
}

以上就是这种加密方式的所有代码,至于解密肯定就是先将后缀名改回视频后缀名,再调用一次前面视频的加密方法,因为是异或运算,一次就是加密,再来一次就是解密。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值