So, lets look at how CBC works first. The following picture shows the encryption when using CBC (in this case, using AES as the cipher).
Basically, Cipher-Block-Chaining means that previous to putt...
AES是一种对称
加密算法,它的相关概念在此不赘述。
GCM ( Galois/Counter Mode) 是对称
加密的一种
加密模式。
在
介绍AES-GCM之前,我们先了解一些相关概念。
下文中出现的符号:
AES-
CTR即
AES算法的计算器
模式(Counter (
CTR)),这种计算器
模式不常见,在
CTR模式中, 有一个自增的算子(IV,后四个字节相当于计数器,每次计算递增),这个算子用密钥
加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种
加密方式简单快速,
安全可靠,而且可以并行
加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。
CTR加密过程的示意图如下所示:
##############################################################
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class AES {
public static final String KEY_ALGORITHM = "AES";
publ.
//
aes是对称
加密算法的一种,
Ctr是分组迭代
模式的一种,需要初始向量,使用了流密钥而非分组密钥
func
aesEncrypt(plainText, key []byte) ([]byte, error) {
//1 ...
NIST标准,AES加密模式介绍包括(ECB,CBC,CFB,OFB,CTR)。This recommendation defines five confidentiality modes of operation for use with an underlying symmetric key block cipher algorithm: Electronic Codebook (ECB), Cipher Block Chaining (CBC), Cipher Feedback (CFB), Output Feedback (OFB), and Counter (CTR). Used with an underlying block cipher algorithm that is approved in a Federal Information Processing Standard (FIPS), these modes can provide cryptographic protection for sensitive, but unclassified, computer data.
包含内容:SM4国密加密算法C语言实现 包括 Spec,C代码,测试用例和分组密码有五种工作体制:
1.电码本模式(Electronic Codebook Book (ECB));
2.密码分组链接模式(Cipher Block Chaining (CBC));
3.计算器模式(Counter (CTR));
4.密码反馈模式(Cipher FeedBack (CFB));
5.输出反馈模式(Output FeedBack (OFB))
1.hls
HTTP实时流(也称为HLS)是一种基于HTTP的媒体流通信协议,由Apple Inc.制定。它类似于MPEG-DASH,它的工作原理是将整个流分解为一系列基于HTTP的小文件下载,每次下载都加载一个分片。当播放流时,客户端可以从多个不同备选流中选择,这些备选流包含不同编码速率的码流,从而允许流会话适应可用的数据速率。在流会话开始时,HLS下载一个扩展的M3U播放列表,其中包含各种可用子流的元数据。
2.加密方式
hls可以允许码流加密和不加密,其中加密方式有几种:aes-128, sampl
在AES-CBC加密算法中,数据被分成固定大小的块,然后每个块被加密。在加密之前,需要将每个块与前一个块进行异或操作,以便增加加密的随机性。这个过程被称为“CBC模式”的加密。
在AES-CBC加密算法中,每个块的格式如下:
| IV | CipherText |
|------|---------------------|
| 随机数 | 经过AES加密的明文块 |
其中,“IV”是初始化向量,它是一个随机数,用于增加加密的随机性。每个块的大小通常是128位或256位,具体取决于加密算法的实现。
在解密过程中,需要使用相同的初始化向量和密钥来解密每个块。由于每个块都与前一个块进行了异或操作,因此需要使用前一个块的密文来解密当前块。
总的来说,AES-CBC加密算法中的帧格式非常简单,但是由于需要处理每个块与前一个块的异或操作,因此需要一些额外的工作来实现加密和解密。