DES加密解密C/C++

来源:互联网 发布:校园寝室网络设计方案 编辑:程序博客网 时间:2024/06/06 09:09

DES加密解密库
http://www.ualberta.ca/dept/chemeng/AIX-43/share/man/info/C/a_doc_lib/libs/commtrf1/cbc_crypt.htm

头文件”des_crypt.h”

示例

#include <iostream>#include <rpc/des_crypt.h>using namespace std;//DES ECB加密void des_encrypt(const char *key, char *data, int len){    char pkey[8];    strncpy(pkey, key, 8);    des_setparity(pkey);    ecb_crypt(pkey, data, len, DES_ENCRYPT);}//DES ECB解密void des_decrypt(const char *key, char *data, int len){    char pkey[8];    strncpy(pkey, key, 8);    des_setparity(pkey);    ecb_crypt(pkey, data, len, DES_DECRYPT);}//DES CBC加密void cbc_des_encrypt(const char *key, char *data, int len, const char *ivec){    char pkey[8];    strncpy(pkey, key, 8);    char vec[8];    strncpy(vec, ivec, 8);    des_setparity(pkey);    cbc_crypt(pkey, data, len, DES_ENCRYPT, vec);}//DES CBC解密void cbc_des_decrypt(const char *key, char *data, int len, const char *ivec){    char pkey[8];    strncpy(pkey, key, 8);    char vec[8];    strncpy(vec, ivec, 8);    des_setparity(pkey);    cbc_crypt(pkey, data, len, DES_DECRYPT, vec);}int main(){    char data[4096] = "cea3e8e1659582206e0be32539729e9ff";    int len = strlen(data);    cout<<len<<endl;    //获取数据需要多少个8字节容纳    int slice_num = 0;    if(len % 8 == 0)    {        slice_num = len/8;    }    else    {        slice_num = len/8 + 1;    }    cbc_des_encrypt("desmiyao", data, slice_num*8, "cbcinive");    printf("%s\n", data);    cbc_des_decrypt("desmiyao", data, slice_num*8, "cbcinive");    cout<<data<<endl;    return 0;}
0 0