【问题标题】:Blowfish crypto messes up first 8 bytes during encryption and decryptionBlowfish 加密在加密和解密期间弄乱了前 8 个字节
【发布时间】:2023-04-04 04:50:01
【问题描述】:

我刚刚尝试使用 openssl c 库的河豚算法进行一些加密/解密,然后遇到了一个奇怪的错误:解密消息的前 64 位不知何故搞砸了。

我做错了什么?

代码如下:

#include <openssl/blowfish.h>
#include <cstring>
#include <cstdio>

int main()
{
    unsigned char rawKey[] = "password";

    BF_KEY key;
    BF_set_key(&key, strlen((char*) rawKey), rawKey);

    unsigned char msg[] = "Lorem ipsum dolor sit amet";

    unsigned char enc[64];
    memset(enc, 0, 64);
    unsigned char ivec[8];
    memset(ivec, 0, 8);

    BF_cbc_encrypt(msg, enc, strlen((char*) msg) + 1, &key, ivec,
        BF_ENCRYPT);

    unsigned char dec[64];

    BF_cbc_encrypt(enc, dec, strlen((char*) msg) + 1, &key, ivec,
        BF_DECRYPT);

    printf("%s\n", dec);

    return 0;
}

输出是:

.,�s�Ksum dolor sit amet

0x7fffffffde20: 46 '.'  3 '\003'    23 '\027'   44 ','  -102 '\232' 115 's' -2 '\376'   75 'K'
0x7fffffffde28: 115 's' 117 'u' 109 'm' 32 ' '  100 'd' 111 'o' 108 'l' 111 'o'
0x7fffffffde30: 114 'r' 32 ' '  115 's' 105 'i' 116 't' 32 ' '  97 'a'  109 'm'
0x7fffffffde38: 101 'e' 116 't' 0 '\000'

提前致谢:D!

【问题讨论】:

    标签: c++ encryption blowfish


    【解决方案1】:

    在 BF_cbc_encrypt 之前尝试 memset(ivec, 0, 8)。 BF_cbc_encrypt 可能会改变它。

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 2015-09-25
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      相关资源
      最近更新 更多