首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >aes cbc反向加密

aes cbc反向加密
EN

Stack Overflow用户
提问于 2019-11-02 18:05:32
回答 1查看 237关注 0票数 0

我有AES加密实现。它有ECB、CBC和CTR等几种模式。我想使用CBC模式。我有加密代码,但不能解密。

加密:

代码语言:javascript
复制
void AES_CBC_encrypt_buffer(uint8_t* buf, uint32_t length, uint8_t* key, uint8_t* init_vector)
{
    uint8_t RoundKey[240];
    KeyExpansion(RoundKey, key);
    for (uintptr_t i = 0; i < length; i += AES_BLOCKLEN)
    {
        XorWithIv(buf, init_vector);
        Cipher((state_t*)buf, RoundKey);
        init_vector = buf;
        buf += AES_BLOCKLEN;
    }
}

解密:

代码语言:javascript
复制
void AES_CBC_decrypt_buffer(uint8_t* buf, uint32_t length, uint8_t* key, uint8_t* init_vector)
{
    uint8_t RoundKey[240];
    KeyExpansion(RoundKey, key);
    for (uintptr_t i = 0; i < length; i += AES_BLOCKLEN)
    {
        CopyMemory(init_vector, buf, 16);
        InvCipher((state_t*)buf, RoundKey);
        XorWithIv(buf, init_vector);
        buf += AES_BLOCKLEN;
    }
}

AES_BLOCKLEN = 16

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 20:37:47

您甚至在使用init_vector之前就已经覆盖了它。这不可能是对的!我不是100%确定,但我认为你只需要把你的CopyMemory调用下移两行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58670056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档