OpenSSL密码库算法笔记——目录

192 篇文章 62 订阅
137 篇文章 80 订阅

 2020年6月19日更新(第6.5节 更新完毕,暂时不再更新)

第0章 大整数的表示及相关函数

第1章 大整数的基本运算

第2章 模运算

第3章 带模的基本运算

第4章 模指数运算

第5章 椭圆曲线

第6章 数字签名和密钥协商

  1. 第6.1章 密钥

    1. 第6.1.1章 密钥结构

    2. 第6.1.2章 密钥结构图

    3. 第6.1.3章 密钥的新建、释放与生成函数

    4. 第6.1.4章 密钥中的method_data与函数

    5. 第6.1.5章 点群信息的读写

    6. 第 6.1.6章 公私钥信息的读取

  2. 第6.2章 数字签名结构

  3. 第6.3章 数字签名与验签

    1. 第6.3.1章 签名原理

    2. 第6.3.2章 签名的编码

    3. 第6.3.3章 签名函数调用关系

    4. 第6.3.4章 签名函数说明

    5. 第6.3.5章 验证原理

    6. 第6.3.6章 验证函数调用关系

    7. 第6.3.7章 验证函数说明

        第6.4.1章 ECDH_DATA结构体

        第6.4.2章 ECDH_METHOD结构体

        第6.4.3章 密钥协商结构体调用图

        第6.4.4章 基本函数说明

        第6.5.1章 密钥协商原理

        第6.5.2章 密钥协商函数

  

使用 OpenSSL 实现对称加密解密算法 DES 和 AES 的步骤如下: 1. 引入 OpenSSL 头文件和链接: ```c #include <openssl/des.h> #include <openssl/aes.h> // 链接需要添加 -lcrypto 参数 ``` 2. 生成密钥: ```c DES_cblock key_des; DES_random_key(&key_des); ``` ```c unsigned char key_aes[AES_BLOCK_SIZE]; RAND_bytes(key_aes, AES_BLOCK_SIZE); ``` 3. 初始化加密解密上下文: ```c DES_key_schedule schedule; DES_set_key(&key_des, &schedule); ``` ```c AES_KEY key_aes; AES_set_encrypt_key(key_aes, 128, &key_aes); AES_set_decrypt_key(key_aes, 128, &key_aes); ``` 4. 加密解密数据: ```c DES_encrypt1(input, output, &schedule); DES_decrypt1(input, output, &schedule); ``` ```c AES_encrypt(input, output, &key_aes); AES_decrypt(input, output, &key_aes); ``` 完整的示例代码如下所示: ```c #include <openssl/des.h> #include <openssl/aes.h> #include <openssl/rand.h> #include <stdio.h> #include <string.h> int main() { // DES加密解密 DES_cblock key_des; DES_random_key(&key_des); unsigned char input_des[] = "Hello, world!"; unsigned char output_des[32]; DES_key_schedule schedule; DES_set_key(&key_des, &schedule); DES_encrypt1(input_des, output_des, &schedule); DES_decrypt1(output_des, input_des, &schedule); printf("DES decrypted message: %s\n", input_des); // AES加密解密 unsigned char key_aes[AES_BLOCK_SIZE]; RAND_bytes(key_aes, AES_BLOCK_SIZE); unsigned char input_aes[] = "Hello, world!"; unsigned char output_aes[32]; AES_KEY aes_key; AES_set_encrypt_key(key_aes, 128, &aes_key); AES_encrypt(input_aes, output_aes, &aes_key); AES_set_decrypt_key(key_aes, 128, &aes_key); AES_decrypt(output_aes, input_aes, &aes_key); printf("AES decrypted message: %s\n", input_aes); return 0; } ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值