java对视频链接加密后返回给前端

java对视频链接加密后返回给前端

问题:视频链接加密后返回给前端
AESUtil 加密使用可以直接采用该文中的方法

参考,前后端API交互数据加密——AES与RSA混合加密完整实例

接下来主要是介绍java加密相关的一些知识

前端AES加密可采用CryptoJS,是一个标准和安全加密算法的JavaScript库
前端RSA可采用JSEncrypt,它是一个很好用的RSA加密算法的JavaScript库
后端,org.apache.directory.studio
策略:前后端互相存公钥,使用AES和RSA混合加密

java导入AES加密,后端使用javax.crypto包

使用java实现AES加密以及解决javax.crypto.BadPaddingException异常
前后端API交互数据加密——AES与RSA混合加密完整实例
AES前后端对称加密

具体使用如下
Apache Commons Codec 使用小结,参考

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;

加密 encryption、 解密 Decrypt

问题:AES加密中具体使用中需要引入的包和使用方法

import [org.apache.commons.codec.binary.Base64;](http://org.apache.commons.codec.binary.Base64;) 
import [org.apache.commons.lang3.StringUtils;](http://org.apache.commons.lang3.StringUtils;)
import sun.misc.BASE64Decoder;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator; 
import javax.crypto.spec.SecretKeySpec; 
import java.math.BigInteger;
	存在问题:SecureRandom 实现完全随操作系统本身的内部状态,除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法;该实现在 windows 上每次生成的 key 都相同,但是在 MAC 或部分 linux 系统上则不同。需要引入jar包
<dependency>
  <groupId>[org.apache.commons](http://org.apache.commons)</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.4</version>
</dependency>
<dependency>
  <groupId>org.apache.directory.studio</groupId>
  <artifactId>[org.apache.commons.codec](http://org.apache.commons.codec)</artifactId>
  <version>1.8</version>
</dependency>

几个常用jar包
StringUtils, 对应包,org.apache.commons.lang3
Base64, 对应包,import org.apache.commons.codec.binary.Base64;
Base64工具类,也可以对数据进行加密。原理:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

问题:前后端加密的流程图
前后端请求加密(附源码),thymeleaf模板进行模拟小程序端。
在这里插入图片描述

问题:RSA是什么?
参考

  RSA是一种公钥密码算法,它的名字由三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母组成的。RSA被用于公钥密码和数字签名。
   在RSA中,加密和解密的形式是相同的。加密是求“E次方的modN”,而解密则是求“D次方的modN”。其中,E是加密(Encryption)的首字母,N是数字(Number)首字母,D是解密(Decryption)的首字母。密钥对(公钥和私钥的密钥对)。E和N两个数组成一个公钥,如“公钥是{E,N}”。“密钥是{E,N}”。

问题:MD5和SHA是什么?
参考

	MD5和SHA-1都被称作哈希(Hash)函数,用过Java语言的人对这个术语应该相当熟悉。Java类库里的Object类定义了hashCode这个函数,但是java的概念略有不同。正式的哈希函数的定义是“把任意长度的数据计算成固定长度的数据”。也就是说函数的输入是任意长的,输出总是固定长度的。MD5和SHA-1是两种加密用哈希函数,MD5的返回值总是128bit的,SHA-1的返回值是160bit,都是固定长度。MD5如果按十六进制表示的话是32位十六进制的数,SHA-1是40位十六进制的数。
	MD5的英文全称是(Message Digest Algorithm MD5),译为消息摘要算法第五版,是众多哈希算法中的一种(哈希算法是一种可以将任意长度的输入转化为固定长度输出的算法)。
因此MD5算法是一种哈希算法,严格来说不能称之为一种加密算法,但是它可以达到加密的效果,因此下文中会出现“MD5加密”这样的称呼。任意长度的数据,其MD5值都是一个32位长度的十六进制字符串,区分大小写
	SHA家族算法英文全称是Secure Hash Algorithm,中文译作安全散列算法,包括SHA-1、SHA-256等好几种算法,
	SHA-1算法和MD5算法都有MD4算法导出,区别在于SHA-1算法在长度上是40位十六进制,即160位的二进制,而MD5算法是32位的十六进制,即128位的二进制,所以2的160次是远远超过2的128次这个数量级的,所以SHA-1算法相对来说要比MD5算法更安全一些。

加密时比较正确的方案是什么?(涉及到加盐这个关键词)
   加盐在密码学中就是指,在密码的任意位置插入一些指定的字符串(即盐值salt)的过程。加盐的目的就是为了增强密码的复杂度,从而使得密码及其哈希值不被收集在彩虹表里,使得用户的密码无法被破解。

下面两个网站试用这两个函数,这样有个感性认识:
MD5:http://md5-hash-online.waraxe.us/
SHA-1:http://sha1-hash-online.waraxe.us/

问题:其他视频加密方法

前端使用blob进行视频路径的加密

利用blob 加密防下载

BLOB,他的全称为big binary large object,二进制大对象。如果把一个视频文件转换成二进制对象,其大小肯定很大,这样理解就清楚多了。在浏览器端也提供了BLOB相关的API,通过new Blog(...)生成blog对象。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值