189 8069 5689

opensslrc5ecb模式-创新互联

ECB(Electronic Code Book)/电码本模式
原理非常简单数据按照8个字节一段进行加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响
特点是 简单 有利于并行计算 容易被***

10年积累的做网站、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有金安免费网站建设让你可以放心的选择与我们合作。

用到两个函数
void RC532setkey(RC532KEY key, int len, const unsigned char data, int rounds);
根据密钥计算密钥组 连同 轮次round 填充到key中 后面的加密解密都须要用的这个key
data:密钥 len:密钥长度 0到2040位 rounds:轮次 可选 8/12/16

void RC532ecbencrypt(const unsigned char in, unsigned char out, RC532KEY key, int enc);
in:输入 out:输出 key:RC532setkey中初始化好的 enc: 可选 RC5ENCRYPT(加密)/RC5DECRYPT(解密)
注意这个函数每次只能处理8字节的数据 加/解密时源数据顺序传入


#include 
#include 
#include 
#include 

int main()
{
    RC5_32_KEY  rckey;
    unsigned char pwd[20] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x10, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xe1, 0xe2, 0xe3, 0xe4 };

    RC5_32_set_key(&rckey, 20, pwd, RC5_8_ROUNDS);

    std::string in = "accidfdsa测试dfd";
    std::string strout = "";
    std::string strjie = "";

    char tempin[8];
    char tempout[8];
    // 加密
    for(size_t i = 0; i < in.size(); i += 8)
    {
        if(i + 8 <= in.size())
            memcpy(tempin, in.c_str()+i, 8);
        else
        {
            memset(tempin, 0, 8);
            memcpy(tempin, in.c_str()+i, in.size()-i);
        }

        RC5_32_ecb_encrypt((const unsigned char*)(tempin), (unsigned char*)tempout, &rckey, RC5_ENCRYPT);
        strout.append(tempout, 8);
    }

    // 解密
    for(size_t i = 0; i < strout.size(); i += 8)
    {
        if(i + 8 <= strout.size())
            memcpy(tempin, strout.c_str()+i, 8);
        else
        {
            memset(tempin, 0, 8);
            memcpy(tempin, strout.c_str()+i, strout.size() - i);
        }   

        RC5_32_ecb_encrypt((const unsigned char*)(tempin), (unsigned char*)tempout, &rckey, RC5_DECRYPT);

        if(strjie.size() + 8 > in.size())
            strjie.append(tempout, in.size() - strjie.size());
        else
            strjie.append(tempout, 8);
    }

    printf("-- %s", strjie.c_str());                                                                                                                                                                                                                                          
    return 0;
}

g++ -g -o main main.cpp -I/usr/include/openssl -lssl -lcrypto -L/usr/lib64

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:opensslrc5ecb模式-创新互联
文章地址:http://cdxtjz.cn/article/dgcsso.html

其他资讯