所有的字符串生成的MD5值是唯一的吗,该怎么处理

所有的字符串生成的MD5值是唯一的吗
我一直没搞明白这个问题 
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的 
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的

------解决方案--------------------
所有字符串生成的md5值是唯一的,这话没错……
但是同一个md5值,可能由不同的字符串产生……

字符串->md5值
这是一个满射,但不是单射……
------解决方案--------------------
md5算法保证
根据md5找生成他的 字符串 集 的 复杂度=穷举
------解决方案--------------------
MD5只是碰撞率低……
不是独一无二……
------解决方案--------------------
探讨
我一直没搞明白这个问题
网络上很多人都说所有的字符串生成的MD5值是唯一的,但是我还是不相信,原因如下:
任何字符串 str MD5后都得到一个定长的字符串 mdstr(32个字节) 但是str的长度却是没限制的
mdstr 是有限个16进制位组成的,所能代表所有字符串的可能只有16的32次方(如果是32位) 而原来字符串的长度和内容是没限制的 也就是说问题在于 16^32组字符串 是怎么和无穷组字符串一一对应起来的