一个文件有没有可能含有自己的「识别码」(如MD5, HASH)

HASH算法的基本价值就是结果不可控,不可反算。先定好结果B再反算源文件(A里面写进B),这种反算一旦被开发出来,就等同于HASH算法被破解,HASH算法将失去在密码学界的存在意义,直接会被放弃掉。
【一个文件有没有可能含有自己的「识别码」(如MD5, HASH)】 (先用源文件A算出B,再把B写进A里,这时的A就不再是原A了,结果将会和B一丁点的关系都没有。别说A里面写入B了,就算把A里面的随便一个字节位0改1或是1改0,最终结果也会和B一丁点关系都没有了。)
MD5算法就是被破解后,其实并不算被完全破解,仅仅是有了一个可能反算的思路,就被放弃了,现在已经没什么地方用了。
HASH碰撞是一种通过反反复复的正算,然后碰出特定结果的过程,虽然可以理解成一种简单暴力的反算,但运算强度根本不是现在的计算机算力能够实现的。
至于后面那个密码簿的问题,这个密码簿根本没有保密的意义,所以公开扩散出去就行了啊,扩散开了自然不用担心什么损坏的问题。一来因为不能反算,这个密码簿公开了对源文件的保密没任何影响。二来密码簿都是当电子签名用的,拿到源文件的人通过这个密码簿来确认源文件的来源和准确性没有问题,公开才是正确用法。

■网友
理论上 考虑一个长度至多为 $128 \\times 2^{128}$ 能包含所有2^128 的二进制串 则一定包含此文件任何一种长度为128的哈希值
或者考虑指定前缀的攻击 如md5 将想构造的md5作为指定的前缀 进行文件构造
可以参考 https://ctf-wiki.github.io/ctf-wiki/crypto/hash/md5-zh/#_2 (未测试)
对于第二个问题 一般的做法是 将原文件计算哈希值 之后用某些非对称加密算法对哈希值进行数字签名 客户端进行数字签名的验证和哈希的校验
此处要求这个哈希函数应该是难以被碰撞的

■网友
理论上
HASH("xxx"+B+"xxx") == B是存在的,然而并没有多少用处,存在又不代表唯一。
另外,签名文件一般为单独的一个文件,也可以附在文件末尾或者开头(只要知道其长度是多少,即可分离出原文件和签名)


    推荐阅读