诚意先开100分,如果有朋友能够帮我解决,500分全部给上.算法要求如下:A:12345678 --- 8位数字 (7~9位内部) 10位的绝对不要!!!
B:12345678 --- 8位数字 (长度同A)K1: ------ 任意密钥1
K2: ------ 任意密钥2要求处理过程如下:    K1:K2 加密
A:B------------>C:D
要求
C:12345678 --- 数字 (长度同A)
D:12345678 --- 数字 (长度同B)==========
注意这个算法的两个特殊要求:
1.从数字到数字加密,不允许出现0~9数字以外的算法;
2.数字的长度不能超过7<LEN(A,B)<10谢谢,我会常来关注.
有兴趣也可以给我email,我的电子邮件地址:
[email protected][email protected]

解决方案 »

  1.   

    Hill密码的改型应该可以满足你的要求
    不过不能对抗已知明文攻击
      

  2.   

    请问哪里可以得到参考资料,
    或者能否给出简单算法模型?我已经掌握一套TEA算法,
    但是不能满足长度问题!
      

  3.   

    Hill密码的资料在大部分密码学书籍上都有。比如William Stalling写的Cryptography and Network Security -- Principles and Practice
      

  4.   

    楼主说的TEA?
    let
      var c0:=12  /* cipher text */
      var c1:=23  var p0:=45  /* plain text */
      var p1:=56
    in
        let 
          var delta := 0x9e3779b9
          var sum := delta << 5
          var y := c0
          var z := c1    in ( for n:= 1 to 32 do (
                z:=z - (((y << 4) + k0()) ^
                        ( y       + sum ) ^
                        ((y >> 5) + k1()) );
                y:=y - (((z << 4) + k0()) ^
                        ( z       + sum ) ^
                        ((z >> 5) + k1()) );
                sum:= sum - delta
             );
             c0:=y;
             c1:=z;
             (c0=p0)&&(c1=p1)
        )
        end
    end
      

  5.   

    idler(I'm back...) 你给我的是delphi代码还是pascal代码?
    大致看了一下,是我已经有的,现在关键是需要位数可以定制的你这段代码我都不能再熟悉了,但是密码是2^32长度的,
    不满足实际问题中灵活多变的要求,能否给一套好用点的?
      

  6.   

    Hill加密方式太不可靠了,
    我所产生的密文需要数值上非常发散,
    你上面的tea代码强度可以,
    就是长度不能更改!有没有加密高手对此感兴趣?
      

  7.   

    唉,可悲,诺大csdn竟然没有一个高手!真是寂寞啊!
      

  8.   

    参考一下:
    http://community.csdn.net/Expert/topic/3586/3586885.xml?temp=4.647464E-02
      

  9.   

    任何一个常用的加密算法都可以,只要稍微修改
    假设 y=D(x) 是一个加密算法.
    并且保持 y和 x 的长度一样.(1) x = 12345678
    (2) x1 = 01234567 (将每个数字减1)
    (3) x2 = 4553207(将x1看作8进制数,转化成10进制数,这里允许出现0和9)
    (4) y2 = D(x2) 
        假设 y2 = 16434824 (这里允许出现0和9)
    (5) y1 = 76543210  (将y2转化成8进制数)
    (6) y =  87654321  (将y1每个数字加1)于是加密完毕
    y = M(x),其中
    M(12345678) = 87654321
     
      

  10.   

    iicup(双杯献酒) 思路不错,不过x岂不杀只能在1~8之间了?
    另外加密强度也不高啊!
      

  11.   

    你提供的参考连接是关于des加密算法的:
    http://community.csdn.net/Expert/topic/3586/3586885.xml?temp=4.647464E-02这里存在的问题是尽管des算法是对称可还原的,但是不能保证将数字加密成等长数字序列.