2012-03-27 69 views
0

是的,它的旧和破碎,但我想了解MD2如何工作,所以我想在C#中编码。到目前为止,我已经得到了填充,看起来应该很简单,但我不确定它是如何工作的。 http://tools.ietf.org/html/rfc1319给出了一个很好的解释,但c中的例子很难理解填充是从哪里来的。我很困惑,为什么在示例代码中,编号在7处停止,然后继续到10,就好像它从0到7的两个4位块一样。MD2哈希填充

我写了这个试图复制它,这是否会返回它应该工作的方式填充?

public static byte[] getPadding(int number_needed) 
     { 
      byte[] temp = new byte[number_needed]; 
      for (int i = 0; i < temp.Count(); i++) 
      { 
       temp[i] = BitConverter.GetBytes(number_needed)[0]; 
      } 
      return temp; 
     } 

回答

0

据我所知,所有的填充字节都有填充字节总数的值。所以如果你需要添加5个填充字节,你可以添加5个字节的值0x05。

它们必须在代码示例中使用octal表示法 - 从01-07开始,然后是(八进制)10,11,12 ... 16,17,20。十进制值仍然是01-16,尽管(填充不是0字节)。

+0

谢谢您的回复。我修改了我的代码以使用需要用作填充的大小。除了理论之外,他们的例子会在国家间给予更多的支持。当你没有良好的输入和输出值时,它的硬编写单元会进行测试。 – 2012-03-27 20:20:39