Blowfish C char的例子*

时间:2013-05-15 00:03:30

标签: c encryption blowfish

我需要帮助Kocher的河豚algorythm在C中实现它的url是(http://www.schneier.com/code/bfsh-koc.zip)。我可以做基础(初始化),但解密不好。我知道我应该使用longs,但请帮我写一个char *函数需要什么(char * encrypted_text)并返回解密的文本。 致谢

2 个答案:

答案 0 :(得分:3)

Blowfish已经在C中实现了。没有必要自己写。

PolarSSL库有一个C实现,可以找到here

答案 1 :(得分:1)

以下是加密的基础知识,它在代码中的工作方式取决于实现:

进行某种状态初始化,包括最多56个字节的加密密钥,设置模式(cbc,ecb等)

输入您的机器(块大小)字节数据块,直到您没有数据...确保以某种方式填充数据流的末尾以获得8个字节......

现在你已经完成了,你可以从状态中提取哈希...

看到这听起来不容易......

现在是一个openSSL示例:

void *source = "12345678";
size_t len = strlen(source);
assert(len % BF_BLOCK == 0);
void *dest = malloc(len);
BF_KEY key;
BF_set_key(&key, 5, "12345"); // make a key

while(len > 0) {
    BF_ecb_encrypt(source, dest, key, 1);// or other BF function see docs.
    source += BF_BLOCK;
    dest += BF_BLOCK;
    len -= BF_BLOCK;
}