Crypto++学习总结---DES

来源:互联网 发布:如何在淘宝投诉卖家 编辑:程序博客网 时间:2024/06/05 17:43

静态库下载连接Cryp++ lib 下载

DES 使用方法:

#include <iostream>#include <des.h>#pragma comment( lib, "cryptlibD.lib" )using namespace std;using namespace CryptoPP;int main( void ){//主要是打印一些基本信息,方便调试:cout << "DES Parameters: " << endl;cout << "Algorithm name : " << DES::StaticAlgorithmName() << endl; unsigned char key[ DES::DEFAULT_KEYLENGTH ];unsigned char input[ DES::BLOCKSIZE ] = "12345";unsigned char output[ DES::BLOCKSIZE ];unsigned char txt[ DES::BLOCKSIZE ];cout << "input is: " << input << endl;//可以理解成首先构造一个加密器DESEncryption encryption_DES;//回忆一下之前的背景,对称加密算法需要一个密匙。加密和解密都会用到。//因此,设置密匙。encryption_DES.SetKey( key, DES::KEYLENGTH );//进行加密encryption_DES.ProcessBlock( input, output );//显示结果//for和for之后的cout可有可无,主要为了运行的时候看加密结果//把字符串的长度写成一个常量其实并不被推荐。//不过笔者事先知道字符串长,为了方便调试,就直接写下。//这里主要是把output也就是加密后的内容,以十六进制的整数形式输出。for( int i = 0; i < 5; i++ ){  cout << hex << (int)output[ i ] << ends;}cout << endl;//构造一个加密器DESDecryption decryption_DES;    //由于对称加密算法的加密和解密都是同一个密匙,//因此解密的时候设置的密匙也是刚才在加密时设置好的keydecryption_DES.SetKey( key, DES::KEYLENGTH );//进行解密,把结果写到txt中//decryption_DES.ProcessAndXorBlock( output, xorBlock, txt );decryption_DES.ProcessBlock( output, txt );//以上,加密,解密还原过程已经结束了。以下是为了验证://加密前的明文和解密后的译文是否相等。if ( memcmp( input, txt, 5 ) != 0 ){   cerr << "DES Encryption/decryption failed.\n";   abort();}cout << "DES Encryption/decryption succeeded.\n";system("pause");return 0;}


原创粉丝点击