aes 密文长度_AES加密算法

点击蓝字默默关注1AES简介

AES(Advanced Encryption Standard),全称:高级加密标准,是一种最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。

2AES具体的加密流程介绍:

c118ec04ffa897b37bd7613b99fe1821.png

1)明文P:

没有经过加密的数据。

2)密钥K:

用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

3)AES加密函数

经加密函数处理后的数据

4)AES解密函数

设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

对称加密算法与非对称加密算法的区别:

<
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中可以使用OpenSSL库来实现AES(ECB/CBC)加密算法。下面是一个简单的示例代码: ```c #include <stdio.h> #include <openssl/aes.h> /* AES ECB加密 */ void aes_ecb_encrypt(const unsigned char *plaintext, const unsigned char *key, unsigned char *ciphertext) { AES_KEY aes_key; AES_set_encrypt_key(key, 128, &aes_key); AES_ecb_encrypt(plaintext, ciphertext, &aes_key, AES_ENCRYPT); } /* AES CBC加密 */ void aes_cbc_encrypt(const unsigned char *plaintext, const unsigned char *key, const unsigned char *iv, unsigned char *ciphertext) { AES_KEY aes_key; AES_set_encrypt_key(key, 128, &aes_key); AES_cbc_encrypt(plaintext, ciphertext, 128, &aes_key, iv, AES_ENCRYPT); } int main() { unsigned char key[] = "0123456789ABCDEF"; // 16字节长度密钥 unsigned char iv[] = "1234567890ABCDEF"; // 16字节长度的初始向量 unsigned char plaintext[] = "Hello, World!"; // 待加密的明文 unsigned char ecb_ciphertext[AES_BLOCK_SIZE]; unsigned char cbc_ciphertext[AES_BLOCK_SIZE]; aes_ecb_encrypt(plaintext, key, ecb_ciphertext); aes_cbc_encrypt(plaintext, key, iv, cbc_ciphertext); printf("ECB ciphertext: "); for (int i = 0; i < AES_BLOCK_SIZE; i++) { printf("%02x ", ecb_ciphertext[i]); } printf("\n"); printf("CBC ciphertext: "); for (int i = 0; i < AES_BLOCK_SIZE; i++) { printf("%02x ", cbc_ciphertext[i]); } printf("\n"); return 0; } ``` 上面的代码实现了AES-128算法的ECB和CBC模式的加密。通过`aes_ecb_encrypt`函数和`aes_cbc_encrypt`函数,可以将明文加密为对应的密文。其中,`key`和`iv`分别为密钥和初始向量,在实际应用中需要保证其安全性和随机性。 `main`函数中的示例对字符串"Hello, World!"进行了ECB和CBC加密,并打印出对应的密文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值