# Pattern分组加密集成模块
## 1. 引用头文件"Pattern.h"
#include "Pattern.h"
## 2. 创建一个Pattern对象
> 1. 初始化一个Pattern对象需要提供两个参数,这两个参数分别指定分组密码种类和加密模式。
> 2. 第一个参数指定分组密码种类,其值为"AES"或者"DES",分别指定DES和AES加密。
> 3. 第二个参数指定分组密码的加密模式,其值为"ECB","CBC","CFB","OFB","CTR",分别指定对应的分组加密模式。
Pattern pat0=Pattern("AES","CTR"); //初始化pat0为使用AES分组密码和CTR加密模式的Pattern对象
## 3. 改变一个已经创建的Pattern对象的加密模式
> 1. 使用reset成员方法来改变加密模式。
> 2. 同构造函数相同,第一个参数指定分组密码种类,其值为"AES"或者"DES",分别指定DES和AES加密。
> 3. 同构造函数相同,第二个参数指定分组密码的加密模式,其值为"ECB","CBC","CFB","OFB","CTR",分别指定对应的分组加密模式。
pat0.reset("DES","ECB"); //将pat0对象修改为使用AES分组密码和ECB加密模式的Pattern对象
## 4. 使用Pattern对象进行加密
> 1. 使用encrypt成员方法来进行字符串加密。
> 2. 第一个参数为明文字符串,长度不限。
> 3. 第二个参数为密钥字符串,若为DES加密,则该密钥字符串的长度必须为8;若为AES加密,则该密钥字符串的长度必须为16。
> 4. 第三个参数为偏移向量字符串,若为DES加密,则该偏移向量的长度必须为8;若为AES加密,则该偏移向量的长度必须为16;特别地,当使用ECB加密时,由于ECB加密中不使用偏移向量,因此该参数取值可以为任意字符串。
> 5. 第四个参数为输出格式指定,取值为"0x"时指定输出密文格式为十六进制;取值为"0b"时指定输出密文格式为二进制。
string plain="abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghab";
string key="abcdefghabcdefgh"; //aes使用32位十六进制密钥,每个字母对应两位二进制
string vec="abcdefghabcdefgh";
string crpt0=pat0.encrypt(plain, key, vec, "0x");
cout<<"ECB加密得到的密文="<<crpt0<<endl<<endl;
## 5. 使用Pattern对象进行解密
> 1. 使用decrypt成员方法来进行字符串加密。
> 2. 第一个参数为密文字符串,长度不限。
> 3. 第二个参数为密钥字符串,若为DES解密,则该密钥字符串的长度必须为8;若为AES解密,则该密钥字符串的长度必须为16。
> 4. 第三个参数为偏移向量字符串,若为DES解密,则该偏移向量的长度必须为8;若为AES解密,则该偏移向量的长度必须为16;特别地,当使用ECB解密时,由于ECB解密中不使用偏移向量,因此该参数取值可以为任意字符串。
> 5. 第四个参数为输出格式指定,取值为"0x"时指定输出明文格式为十六进制;取值为"0b"时指定输出明文格式为二进制。
string result=pat0.decrypt(crpt0, key, vec, "0x");
cout<<"ECB解密得到的密文="<<result<<endl<<endl;
## 附注:
> 1. example.cpp中提供了一个使用该Pattern集成分组加密模块的示例。
信息安全基础课程实验作业-分组加密集成模块集成了AES, DES分组加密算法-内含源码和说明书(可自己修改).zip
版权申诉
193 浏览量
2024-05-21
23:35:40
上传
评论
收藏 17KB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/f62fbb2c17a9404795551a60e3b1502a_weixin_32393347.jpg!1)
小码蚁.
- 粉丝: 2664
- 资源: 4483
最新资源
- RB305A-SOT-23封装 单节锂电池保护IC 深圳市可芯电子有限公司.pdf
- javaweb 期末复习
- unity简单数字拼图小游戏(源码)
- 危包证办理培训教材(出境危险货物运输包装使用鉴定结果单)
- Vissim9 用户手册(英文版)
- 基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本124.0.6350.0)
- ThinkPHP微信独立互换红包系统开源版.zip
- ChromeDriver-87.0.4280.88.zip 下载
- RB306A-SOT23-5封装 单节锂电池保护IC 深圳市可芯电子有限公司.pdf
- IMG_20240615_134614.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)