想把以下的改成delphi版的. 有没高手帮忙啊. 改好一定共享. 
这个版本有php版, prel版, js版的,对不同语言组成的系统有用.
我试过js跟php的运行结果是相同的.现在想改成delphi版.
问题不大, 就是 >>> 跟 数组溢出 的问题.太长贴不了,里面的网址有下//Javascript version
//Paul Tero, July 2001
//http://www.tero.co.uk/des/
//
//Optimised for performance with large blocks by Michael Hayworth, November 2001
//http://www.netdealing.com
//
//THIS SOFTWARE IS PROVIDED "AS IS" AND
//ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
//ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
//FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
//DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
//OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
//OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
//SUCH DAMAGE.//des
//this takes the key, the message, and whether to encrypt or decrypt

解决方案 »

  1.   

    >>> 是jsp的无符号右移赋值操作
    如:
    var temp
    temp = -14
    temp >>>= 2用delphi可以这样:
    var
      temp:integer;
    ...
      temp:=-14;
      temp:=dword(temp) shr 2;
    结果相同
    另外:
    des的delphi源码,网上有一堆,没必要再自己改了,给你一个(我没测试)
    http://www.delphiun.com/down_view.asp?id=1340
      

  2.   

    又试了一下,delphi的移位本身就是无符号的
     temp:=-14;
      temp:=temp shr 2;
    结果一样
      

  3.   

    http://www.gzyd.net/lael/Unit2.pas初步翻译成这样,还有很多错
      

  4.   

    delphi 的是有很多, 不过我用js跟用php跟delphi做的一个系统。要统一DES算法才行
      

  5.   

    keiy 我原来就的就是你给那个,他只支持8位的。结果还跟我用js跟php得到的不同,没办法才去改有空帮看看 http://www.gzyd.net/lael/Unit2.pas
      

  6.   

    注意,如果temp为负数,js的>>不等于delphi的shr,delphi没有带符号的按位右移运算符
    不过.它可通过汇编来实现:
    var
      temp:integer
      asm
        mov eax,temp
        sar eax,2
        mov temp,eax
      end;
    结果与jap的>>相同,而js的
    temp >>> 2

    delphi的
    temp shr 2
    结果相同
    ------------------------------------------------------------
    还有:标准的des算法的结果应该是相同的
      

  7.   

    http://www.gzyd.net/lael/Unit2.rar 改为 .pas不知哪个是标准的。
      

  8.   

    [错误] Unit2.pas(19): Overflow in conversion or arithmetic operation最后一个错误了。。 哪个高手帮看看。
      

  9.   

    我已经做过标准测试,如果其他情况有问题给我反馈
    http://blog.csdn.net/zswang/archive/2006/10/27/1353103.aspx
    http://blog.sina.com.cn/myblog/article/article_reader.php?blog_id=589d32f5010006pe
      

  10.   

    全部完成了。需要的朋友可到下面地址下载:原版有js,php,prel版本,我加了一个delphi版(根据js,prel版综合来改的)的
    http://www.gzyd.net/lael/des.rar 解压
    我简单测试了下,全部版本的结果都是相同的。