crypto++使用DES加密(ECB pkcs7padding )

本文探讨了密码学中的几种填充方法,包括ZeroPadding、pkcs7padding和pkcs5padding,并详细介绍了DES加密解密算法在ECB模式下的实现过程。通过对比不同填充方式的特点,以及在实际应用中可能遇到的问题,加深了对密码学填充的理解。

zeropadding

ZeroPadding,数据长度不对齐时使用0填充,否则不填充。使用0填充有个缺点,当元数据尾部也存在0时,在unpadding时可能会存在问题。

pkcs7padding

假设每个区块大小为blockSize
<1>已对齐,填充一个长度为blockSize且每个字节均为blockSize的数据。
<2>未对齐,需要补充的字节个数为n,则填充一个长度为n且每个字节均为n的数据。

pkcs5padding

PKCS7Padding的子集,只是块大小固定为8字节。

ECB 模式

在这里插入图片描述

//加密
string	DES_encrypt(const char *key, string &content){
	string cipher;
	try{
		ECB_Mode<DES>::Encryption	e;
		e.SetKey((const byte*)key, DES::KEYLENGTH);
		StringSource(content, true, new StreamTransformationFilter(e,new StringSink(cipher)));
	}
	catch (const Exception &e){
		cout << e.what() << endl;
	}
	return cipher;
}
//解密
string	DES_decrypt(const char *key, string &cipher){
	string plain;
	try{
		ECB_Mode<DES>::Decryption	e;
		e.SetKey((const byte*)key, DES::KEYLENGTH);
		StringSource(content, true, new StreamTransformationFilter(e,new StringSink(plain)));
	}
	catch (const Exception &e){
		cout << e.what() << endl;
	}
	return plain;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值