0

我的应用程序使用 libmedia 播放 20 分钟的加密视频时出现问题。一开始一切都很好:图书馆工作并播放加密视频......但6分钟后,复制在20秒内暂停,之后视频在4分钟内继续播放并再次暂停,20秒后重新启动并再次暂停......等等上。

视频在 Android 4.1 上播放,80MB 大小并使用 AES 加密。这是我们在“onCreate”方法末尾使用的代码:

private void startVideo() {

    mVideoView.requestFocus();
    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

        @Override
        public void onCompletion(MediaPlayer mp) {              
            finish();                    
        }           
    });

    try{
        SecretKeySpec skey = new SecretKeySpec("XXXXXxxxxxXXXXXX".getBytes(), "AES");     
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, skey,new IvParameterSpec(new byte[16]));   

        Licensing.allow(this);
        mServer = new LocalSingleHttpServer();        

        mServer.setCipher(cipher);
        mServer.start();           

        String serverPath = mServer.getURL("myvideopath");      
        mVideoView.setVideoPath(serverPath);
        mVideoView.setMediaController(mMediaController);
        mVideoView.start();  

    }catch(Exception e){
        e.printStackTrace();
    }

    mVideoView.setMediaController(null);
}

似乎视频在此暂停时再次被解密......但我不知道为什么。

4

1 回答 1

2

问题是Cipher.getInstance("AES/CBC/PKCS5Padding")它不是流密码,是分组密码。

使用Cipher.getInstance("AES/CFB/NoPadding")解决问题。

于 2013-11-13T14:55:06.280 回答