最近工作需要做视频加密解密,大概需求就是摄像头录制好的视频实时加密存储到本地,防止别人拔掉存储卡把视频拷贝走。
大胆设想一下,假如现在很多网约车车内都有摄像头,这些对着乘客和司机的车内摄像头都是实时录制视频并存储到本地,如果司机把摄像头的存储卡拔走,把乘客视频拷贝走,用户隐私存在很大安全隐患。
怎么解决这个问题?
解决办法就是对视频进行加密,摄像头录制视频的原理就是连续拍照,一张一张的图片连续播放就是一个视频了,加密就是对每一帧视频(图片)进行加密,然后再存储到本地。
如果视频需要回传到服务器上,在服务器上进行解密,然后就可以播放了。
视频加密算法
我使用的是很成熟的对称加密。
对称加密原理相对比较好理解,就是加密和解密都用的同一把钥匙,保存好钥匙就可以防止视频被破解了,服务器保存钥匙也不能用明文,这里就不多做描述了,如果你处理过用户敏感信息加密,应该很容易想到解决办法,比如用户手机号,银行卡号,等敏感信息,一个负责的企业,如果对用户敏感信息进行加密存储,就算你是企业里权限最高的mysql管理员,那也是看不到用户信息的。
技术圈成熟的加密工具大集合
本来是个table,整理成了一个脑图。
这里都是开源组件,大部分都包含对称加密算法和非对称加密算法
比如
AES(CBC, GCM)
DES/3DES
ChaCha20
RC4
我采用的是chacha20,设备端用c加密,后台服务用java解密(通过JNI技术调用c)
写的比较粗糙,这其中还有很多技术细节,比如视频流读取方式,mp4生成工具,如何使用ffmpeg等工具。可以找我私聊。
建议收藏,没准你啥时候就用到了。