linux内核-md5编码1

内核中如何处理md5验证的,下面这篇文章,很长,很长,讲了内核的相关机制,以及各种调用代码,并且注释,但是就是因为只是解读了内核,却还是很晦涩难懂,如果能用大白话将自己的理解输出来,更多的初学者应该会更容易理解吧。

http://bbs.chinaunix.net/thread-3627341-1-1.html

 

可以肯定的是,内核中本身就实现了大多数的加密算法,并且向上层留出了接口,来供上层开发使用,所以,对于一个要是功能的人来说,现在要做的是弄清楚这些接口如何使用,其实现原理,可以参考上面的网址,本人推荐通过阅读数据,进行整体了解,推荐数据《精通Linux内核网络》。

 

参考文章:https://blog.****.net/dog250/article/details/5561075

http://bbs.chinaunix.net/thread-1984676-1-1.html

https://blog.****.net/dog250/article/details/5561075

 

 

上面两篇文章讲了内核如何生成md5,并附了一个例程,但是按照该例程,在我的环境里编译报了错,意识到,内核编程,不是这么随意的,需要在相对应的内核版本中进行编程,查看了我的内核版本,发现是3.10.0-862.el7.x86_64,然后下载差不多版本的内核包,查看源码,发现其中的crypto_digest_init这个东东,根本就找不到。。。

 

于是,又一个疑问,什么样地接口是内核允许用户使用的,参考

https://blog.****.net/angle_birds/article/details/7396748

 

知道了这个,大概知道以后使用要看什么了。

幸好,我的领导在代码里已经写好了一个md5的检验,要找到了他使用的函数,是这个:crypto_shash_init,???奇怪,为什么他是用的是这个?于是,查一下hash与md5的关系:

https://www.cnblogs.com/haiyan123/p/8342616.html

https://zhuanlan.zhihu.com/p/37165658

通过这个我们知道,hash算法是基础,md5是根据它来的,这样我们就可以理解(这应该是早期知识了吧,我差的太多),那么这个crypto_digest_init又是什么???

对不起,我找了半天没找到。。。

还有一个点对于完全不了解的人,千万不要想着有加密就有解密,原因如下,说来这个网站也是有点逗。

linux内核-md5编码1