# 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集成分组加密模块的示例。
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
中山大学信息安全基础课程实验作业-密码编码学与网络安全-书中DES, AES, RSA, MD5, SHA-512等典型算法的手写实现.zip (50个子文件)
AES
example.cpp 423B
AES.h 29KB
readme.md 2KB
AES example.txt 187B
HMAC
MD5.h 17KB
example.cpp 387B
readme.md 1KB
HMAC.h 5KB
HMAC example.txt 182B
SHA512.h 15KB
Diffie-Hellman
DH.py 3KB
readme.md 1KB
example.py 1KB
SHA512
example.cpp 1KB
readme.md 1KB
SHA512 example.txt 2KB
SHA512.h 16KB
Pattern
example.cpp 1KB
AES.h 29KB
readme.md 3KB
Pattern.h 22KB
DES.h 19KB
MD5
MD5.h 17KB
example.cpp 245B
readme.md 1KB
MD5 example.txt 149B
RSA
readme.md 987B
RSA.py 5KB
example.py 453B
HashCenter
MD5.h 17KB
example.cpp 382B
HashCenter.h 3KB
readme.md 1KB
SHA512.h 15KB
Tradition
example.cpp 939B
Tradition.h 6KB
readme.md 3KB
DAA
example.cpp 237B
DAA example.txt 258B
readme.md 1KB
DES.h 19KB
DAA.h 4KB
DES
example.cpp 388B
readme.md 2KB
DES.h 19KB
DES example.txt 143B
Elgamel
Elgamel.py 5KB
readme.md 2KB
example.py 682B
README.md 1KB
共 50 条
- 1
资源评论
小码蚁.
- 粉丝: 2526
- 资源: 4089
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功