我试图做一些用C与MD5(和后者试图做一些与SHA1算法)。我的主要问题是,我从来没有真的用C任何复杂,只是简单的东西(没有像指针的指针或结构)。

我得到的MD5算法在这里。

我包括在该文件md5.c和在我的C项目md5.h(使用代码块),但唯一的问题是,我真的不知道如何使用它。我已经阅读并重新读取代码和我不理解如何使用这些功能以打开“示例”到MD5哈希值。

我没有做过C编程在一段时间(主要是PHP的),所以我在这里有点失落。 基本上我所要求的是一些用法示例。它们通过md5main.c文件中提供的,但我不理解他们。

我是不是瞄准高吗?我应该停止这一切,重新开始读的C本书或任何人都可以给我一些指点,看看我能想出解决办法。

感谢。

有帮助吗?

解决方案

虽然我与比尔同意,你应该回去到C的书,如果你想真正了解你在做什么。但是,在努力帮助,我已经修改,并从md5main.c ...

注释一些代码
const char* testData = "12345";  // this is the data you want to hash
md5_state_t state;  // this is a state object used by the MD5 lib to do "stuff"
                    // just treat it as a black box
md5_byte_t digest[16];  // this is where the MD5 hash will go

// initialize the state structure
md5_init(&state);

// add data to the hasher
md5_append(&state, (const md5_byte_t *)testData, strlen(testData));

// now compute the hash
md5_finish(&state, digest);

// digest will now contain a MD5 hash of the testData input

希望这有助于!

其他提示

您应该停止这一切,重新开始读的C书。

我的经验是,当我努力学习新的编程语言,它不是实际尝试实现在同一时间一个复杂的工程。你应该做简单的练习,在C,直到您熟悉的语言,然后解决类似实现MD5或整合现有的实现。

顺便说一下,读取代码是从编写程序不同的技能。有这两个技能之间的差异,但它们都需要你理解的语言很好。

我觉得你选对最糟糕的事情来看待(由无过错你自己的)。加密和散列算法类型将要做出的最奇怪的使用的语言可能做数学的,他们需要尽快做的类型。他们几乎肯定会被模糊,不易理解。另外,你需要为了得到深陷数学真正理解他们。

如果你只是想要一个散列算法,得到一个众所周知的实施和使用它作为一个黑盒子。不要试图实现它自己,你几乎肯定会带来一些加密的弱点进入实施。

编辑:是,如果你想在加密伟大的书籍(或资源)充分响应,看看布鲁斯。 应用密码学是一个典型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top