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