美文网首页
一种视频加密算法

一种视频加密算法

作者: Dale_Dawson | 来源:发表于2019-01-03 10:19 被阅读0次

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

     /**
         * 文件加解密
         *将视频文件的数据流前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));
                    }
                }
            }
        }
    }
    

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

    相关文章

      网友评论

          本文标题:一种视频加密算法

          本文链接:https://www.haomeiwen.com/subject/kzoxrqtx.html