请高手们帮帮忙!!md5的问题!急急急!!!
我在做一个有注册验证保护的东西,我看到有的文章上写有如下内容:
在软件的加密保护中,MD5是一个经常会被用到的加密算法,但是由于MD5算法为不可逆算法,所以所有的软件都只能使用MD5算法作为一个加密的中间步骤,比如对用户名做一个MD5变换,结果再进行一个可逆的加密变换,变换结果为注册码。而做注册机时也必须先用MD5进行加密转换,然后再用第二个算法的逆算法进行演变,得出原始的用户名。具体来说:我们设用户名为StrName,注册码为StrRegNO,那么如果哪一位共享软件的作者采用如下算法作为他自己软件的注册算法:‘If MD5(StrName)=MD5(strRegNO) then "register successful" Else "register unsuccessful " ’那么对于Cracker来说只要可以看出软件采用了MD5算法就可以写出注册机了,但是如果作者采用如下算法:‘If MD5(StrRegNO)=MD5(StrName) Then "register successful" Else "register unsuccessful " ’的话,那么我想连共享软件作者自己也必须通过穷举法才可以求出注册用户的序列号了。
可是我不明白,二者的初始值不同,用md5加密后怎么回相同呢?
这些功能怎么实现呢?
请高手们赐教!!!不胜感激!!
--------------------编程问答-------------------- 自己先顶一下!! --------------------编程问答-------------------- 毕业设计就要交了,朋友们帮帮忙吧!!谢谢了!! --------------------编程问答-------------------- 这个很简单,一个字符串使用特定的md5算法加密后,长度是一定的,而且必定小于这个字符串的长度。
比如说,一个特定的md5算法使得无论多长的内容哈希之后都会变成了32个字节长,那么可以确定的是,所有内容通过这一算法加密之后,都只会得到16^32种结果。因此,必然存在一种以上不同的内容,它们通过这一算法得到的哈希值是相同的。 --------------------编程问答-------------------- 这就好比说,如果三百六十七个人站在一起,那么它们中间至少有两个人的生日是相同的。 --------------------编程问答-------------------- 那怎么判断呢? --------------------编程问答-------------------- 我要做的东西分两部分,客户端和服务端,客户端将注册码发送给服务端,服务端生成激活码,发送给客户端,客户端验证后,正确则注册成功,错误则注册失败。怎么实现呢?
--------------------编程问答-------------------- 确切地说,是客户通过某种方式把注册码发给软件开发者
补充:VB , 基础类