CN1735013B - 用于执行md5摘要的设备和方法 - Google Patents

用于执行md5摘要的设备和方法 Download PDF

Info

Publication number
CN1735013B
CN1735013B CN2005100980439A CN200510098043A CN1735013B CN 1735013 B CN1735013 B CN 1735013B CN 2005100980439 A CN2005100980439 A CN 2005100980439A CN 200510098043 A CN200510098043 A CN 200510098043A CN 1735013 B CN1735013 B CN 1735013B
Authority
CN
China
Prior art keywords
iteration
result
function
variable
calculating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2005100980439A
Other languages
English (en)
Other versions
CN1735013A (zh
Inventor
K·J·科施
J·J·赛迪尔
W·K·费哈利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1735013A publication Critical patent/CN1735013A/zh
Application granted granted Critical
Publication of CN1735013B publication Critical patent/CN1735013B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

提供一种执行MD5摘要的方案。该方案包括流水线操作MD5摘要处理、以产生任何任意长度的输入消息的128位摘要的设备以及方法。

Description

用于执行MD5摘要的设备和方法
技术领域
本发明总的来说涉及网络安全性,更加具体地涉及用于流水线操作MD5摘要处理的设备和方法。
背景技术
网络允许计算机与其它装置互相通信。例如,网络可以传输表示视频、音频、电子邮件等等的数据。然而,网络系统常遭受很多的威胁,包括缺乏保密性、缺乏数据完整性、身份欺骗以及拒绝服务的攻击。为了对付这些威胁,已经开发和使用了很多的方法以改善网络通信的安全性。例如,一种方法是使用消息摘要(digest)算法以产生用于任意长二进制数据流的压缩数字签名。对于两组不同的输入,理想的消息摘要算法决不会产生相同的签名,但是要想获得这种理论上的完美将会需要和输入文件一样长的消息摘要。实际的消息摘要算法,例如消息摘要5(MD5)算法,使用一个适当大小的数字签名(例如,用于MD5算法的128位)。据推测使用MD5摘要处理而产生两个具有相同消息摘要的消息或产生任何具有给定的预先确定的目标消息摘要的消息在计算上是不可行的。因此,接收器可以使用MD5摘要处理以验证数据是否因为签名的公开而已经发生改变。
MD5处理512位块中的数据并且产生128位的摘要。当消息跨越多个块时,为一个块产生的摘要用作为下一个块产生摘要的初始值。MD5摘要处理包括四轮计算,每轮包括16次计算迭代。尽管MD5摘要处理可以通过软件模拟实施,但是因为硬件解决办法的更高处理速度,摘要处理的硬件实现是更加理想的。当摘要处理未显著地减慢网络通信的数据处理速度时,这是非常有利的。在硬件实现中,一个低速的MD5计算要求使用一个以上MD5模块来改善MD5处理速度以便网络系统的整个数据处理速度不会减慢。更多的MD5模块需要芯片中更大的物理区域,并且因此需要更高的功率消耗以及更高的成本。因此,需要改善MD5硬件实现的处理速度。
附图说明
从以下本发明的详细说明中,本发明的特征以及优点将会变得明显,其中:
附图1是示出通用网络系统的示意图;
附图2示出为消息产生128位摘要的处理的伪代码;
附图3是用于示出执行包含在MD5摘要处理中的操作的示例性处理的方框图;
附图4是用于示出执行包含在MD5摘要处理中的操作的另一个示例性的处理的方框图;
附图5是执行MD5摘要的示例性系统的方框图;
附图6是示出根据本发明的一个实施例、执行MD5摘要处理的功能块的示意图;
附图7是示出根据本发明一个实施例、通过流水线操作摘要处理来执行MD5摘要处理的功能块的示意图;
附图8是示出根据本发明一个实施例、流水线操作MD5摘要处理的过程的表格;以及
附图9是网络系统的示意图。
具体实施方式
本发明的一个实施例包括用于实施MD5摘要处理的设备以及方法。MD5摘要处理是一个为任何任意大小的消息产生128位摘要的过程。摘要处理包括四轮计算,每轮包括16次计算迭代。一轮的每个迭代包括一个函数计算、四个加法操作以及一个移位操作,其可以占用两个时钟周期来完成。因为每个迭代使用来自先前迭代的结果,连续迭代的计算也许不能容易地进行流水线操作(pipeline)。因此,根据MD5摘要处理的简单的实施方案,需要花费至少128个时钟周期来为512位块产生128位的摘要。
根据本发明的一个实施例,MD5摘要处理的连续迭代的计算可以是流水线的,以减少为512位块产生128位摘要所需要的总周期数目。使用来自先前迭代的结果的是在每个迭代中的函数,并且因此防止了连续迭代的计算被流水线操作。根据本发明的一个实施例,可以为该函数计算两组结果,其对应于来自先前迭代结果的两个不同的假设。一个假设是来自先前迭代的结果中的所有位都是0;而另一个假设是结果中的所有位都是1。使用这种方法,该函数的计算可以在来自先前迭代的结果可用之前开始;而当结果可用时,该结果可以用来按位选择该函数的正确的输出。这种方法使流水线操作连续迭代的计算成为可能并且减少为产生512位块的消息产生128位摘要所需要的总时钟周期数目。
说明书中引用的本发明的“一个实施例”或“实施例”指的是,结合该实施例描述的具体的特点、结构或特性包括在本发明的至少一个实施例中。因此,整个说明书不同地方出现的短语“在一个实施例中”没有必要所有的都是指相同的实施例。
附图1描述了支持多个终端的通用网络系统110。该网络系统110可以包括多个装置,例如路由器、交换机以及桥接器,其使数据从一个终端传输到另一个终端变得容易。网络系统可以是无线系统、以太网系统、任何其它系统或不同网络系统的结合。网络系统可以使用人造卫星120来帮助一个终端连接到另一个终端。网络系统的终端可以包括服务器(130)、台式计算机(140)、个人数字助理(PDAs)(150)、手机(160)、膝上型计算机(170)或其它装置。不同终端间通信的数据可以包括视频、音频、消息及其它数据。网络系统可以为消息验证以及认证使用MD5摘要处理以改善网络通信的安全性。
MD5摘要处理由麻省理工学院计算机科学实验室以及RSA数据安全公司的Ron Rivest所设计,来为任何任意长度的消息产生128位摘要。该过程由RonRivest在“MD5 Algorithm(MD5算法)”中描述,可在http://www.kleinschmidt.com/edi/md5.htm(2004年4月5日最后访问)中得到(以下称为“MD5规范”)。根据MD5规范,经过填充以及附加来准备任何任意长度的消息以便产生的消息M的长度恰恰是512位的倍数。换句话说,M可以由一系列32位字表示,M[0]、M[1]、...M[N-1],其中M[]表示消息M内部的一个字,而N是16的倍数。产生消息摘要的整个过程中都使用四个变量A、B、C以及D并且将其保存在四字缓存器中。通过将A、B、C以及D中的位串连在一起来获得输入消息的最终128位摘要。为了描述的方便起见,这四个变量以下称作根变量(root variable)。将根变量A、B、C以及D初始化为以下十六进制的值(低阶字节在前):
A:01234567,
B:89ab cd ef,
C:fe dc ba 98,
D:76 54 32 10。
另外定义四个辅助函数,每个分别用于一个轮回(round),并且用于计算该消息摘要:
F(B,C,D)=(B AND C)OR((NOT B)AND D))  (轮回1),(1)
G(B,C,D)=(B AND D)OR(C AND(NOT D))   (轮回2),(2)
H(B,C,D)=B XOR C XOR D               (轮回3),(3)
I(B,C,D)=C XOR(B OR(NOT D))          (轮回4),(4)
这四个函数,F、G、H以及I,以“逐位并行”方式操作,以产生它们的来自B、C以及D位的输出。
附图2示出说明为该消息产生128位摘要的处理的伪代码。该伪代码由MD5规范改编而来。伪代码中的变量阵列,T[m],m=1,...,64,表示多个常值,其中T[m]等于4294967296*(abs(sin(m)))的整数部分,其中m是按弧度测量的。在典型应用中,这些常变量的值可以是预先计算并且保存在一个表格中(以下称为“T表格”)。伪代码的第1行开始一个处理的循环。循环的主体,第2至22行,处理输入消息的16字(512位)块。当输入消息中的所有16字块处理完后结束循环。在第2行到第4行,16字块中的字被读入变量阵列,X[k],k=0,...15。第5行使用四个临时变量AA、BB、CC以及DD来备份A、B、C以及D的当前值。第6-9行执行包含在轮回1中的操作,其包括16次迭代。每个迭代包括以下形式的操作:
A=B+((A+F(B,C,D)+X[k]+T[m]<<<S)(5)
其中“Y<<<S”表示Y的值左移S位的操作。第10-13行执行包含在轮回2中的操作,轮回2包括16次迭代,每个包括以下形式的操作:
A=B+((A+G(B,C,D)+X[k]+T[m])<<<S)(6)
第14-17行执行包含在轮回3中的操作,其包括16次迭代。每个迭代包括以下形式的操作:
A=B+((A+H(B,C,D)+X[k]+T[m])<<<S)(7)
最后第18-21行执行包含在轮回4中的操作,其包括16次迭代。每个迭代包括以下形式的操作:
A=B+((A+I(B,C,D)+X[k]+T[m])<<<S)(8)
如果当前的16字块是输入消息中的第一个块,则通过将A、B、C以及D的当前值和它们为先前16字块而获得的先前值或它们的初始值相加,从而在四轮操作之后,在22行获得16字块的输出数据。如2-22行所示的处理一直重复,直到输入消息中所有的16字块处理完成为止。输入消息的最终输出是128位的摘要-A、B、C以及D中位的串连。
尽管四个轮回中的迭代不包括完全同样的操作,如方程式5-8所示,但是这些迭代是非常相似的。事实上,方程式5-8可以概括为一个共同的形式:
A=B+((A+FF(B,C,D)+X[k]+T[m,n])<<<S[m.n])(9)
其中FF是函数F、G、H以及I的通用表示;k是16字块中的字的索引;m是轮回的索引;以及n是一个轮回中迭代的索引。同样注意到,在每个轮回内从一个迭代到另一个迭代,四个根变量A、B、C以及D的值向右循环旋转一个体置,例如ABCD→DABC→CDAB→BCDA→ABCD→DABC→...。因为所有迭代间操作的通用性以及因为从一个迭代到另一个迭代的根变量旋转的规律性,可以使用一个通用的处理来执行包含在每个迭代中的操作。
附图3示出了说明执行包含在每轮MD5摘要处理的每个迭代中的操作的一个示例性处理的方框图。在块310中,可接收根变量A、B、C以及D的值。对于轮回1的第一迭代,为A、B、C、D所接收的值是初始值。对于所有其它的迭代,接收的值是来自先前迭代的值。同样在块310中,在一个迭代结束之后以及下一个迭代开始之前,变量A、B、C以及D的值按“B→C→D→A”这样的方式旋转。在块320中,可以选择以及执行辅助函数(对于轮回1、2、3以及4分别为F、G、H以及I)。在块330中,由辅助函数产生的输出可以添加上根变量A的值。在块340中,来自块330的输出数据可以添加上X[k],它是从16字块中的16字中被选择出来的在当前被处理的一个字。在块350中,来自块340的输出数据进一步可以添加上T[m,n],它是从第m轮的第n次迭代的T表格中被选择出来的常值。在块360中,来自块350的输出数据可以左移S[m,n]位,其中S[m,n]是一个具有第m轮的第n次迭代的预定值的变量。在块370中,由块360产生的输出数据可以添加上根变量B的值。一个轮回的一次迭代在块中370中的操作执行以后结束。来自块370的输出数据可以用来更新根变量A。因为变量A、B、C、D的值在一个迭代结束以后循环地旋转(“A→B→C→D→A”),所以B的值可以被直接设置为来自块370的输出数据,以便在每次迭代以后实际上执行一个旋转-B→C→D→A。
附图4示出了说明执行包含在每轮MD5摘要处理的每次迭代中的操作的另一个示例性处理的方框图。在块410中,可接收根变量A、B、C以及D的值。对于轮回1的第一迭代,为A、B、C、D而接收的值是初始值。对于所有其它的迭代,接收的值是来自先前迭代的值。同样在块410中,在一个迭代结束以后以及下一个迭代开始之前,变量A、B、C以及D的值按“B→C→D→A”的方式旋转。可以看出,如附图3所示,X[k]、T[m,n]以及根变量A的值在一个迭代开始之前是可用的。因此,X[k]、T[m,n]以及S[m,n]可以在块420中加在一起同时在块430中选择以及执行辅助函数。在块440中,来自块430的输出数据可以加上来自块420的输出数据。在块450中,来自块440的输出数据可以左移S[m,n]位。在块460中,来自块450的输出数据可以进一步加上根变量B的值。来自块460的输出数据可以用来更新A的值。因为根变量间的循环旋转(“A→B→C→D→A”),B的值可以被直接设置到来自块460的输出数据的值。因为X[k]、T[m,n]以及A的值加在一起同时选择以及执行一个辅助函数,所以在迭代的关键路径上存在一个辅助函数、两个加法以及一个移位。与附图3所示的处理相比,附图4所示的处理在迭代的关键路径上减少了两个加法。
附图5示出执行MD5摘要的示例性系统。该系统包括根变量存储装置510、准备机构520、控制器530以及MD5计算机构540。根变量存储装置510包括分别存储根变量A、B、C以及D的存储器A(512)、存储器B(514)、存储器C(516)以及存储器D(518)。准备机构520经过例如填充以及附加之类的手段而准备输入消息,以便该得到的消息所具有的长度为512位的倍数。准备机构还产生具有64个值的T表格,每个被用作第m个轮回的第n次迭代的T[m,n](如方程式9所示)。另外,准备机构为MD5计算机构提供如方程式9所示的S[m,n]的值。此外,根据MD5规范,准备机构提供筹备的输入消息的一个字,X[k](如方程式9所示),其为一个轮回的每个迭代所需要的。在一个实施例中,如附图5所示,准备机构可以与其它组件相分离。在另一个实施例中,准备机构可以完全地或部分地与其它组件结合以获得MD5摘要处理的理想的结果。MD5计算机构540执行包含在方程式9中的操作并且为每一个迭代产生一个结果,其进一步用于更新根变量存储装置中的根变量A。MD5计算机构包括例如处理器的电路、专用集成电路(ASIC)、可编程序逻辑电路以及计算机程序。在一个迭代中的操作执行以后以及下一个迭代开始之前,控制器530旋转在根变量存储装置中的根变量A、B、C以及D(例如,“B→C→D→A”)。控制器还指示准备机构什么参数(例如,X[k]、T[m,n]、S[m,n])应该对于MD5计算机构来说是可用的以及在何时是可用的。另外,控制器控制MD5计算机构中的部件以使它们能够一起工作从而为每一个迭代产生一个结果。此外,当请求动作已经执行或请求的数据已经可用时,控制器可以接收来自根变量存储装置、准备机构以及MD5计算机构的通知,以便控制器可以发出为执行所请求的操作而所需的下一条指令。在控制器的控制下,MD5计算机构为输入消息中的每一个16字块执行4轮的操作,每轮包括16次操作迭代。当输入消息中的所有16字块已经处理完成,保存在存储器A、B、C以及D中的结果数据形成输入消息的128位摘要。
附图6描述了根据本发明一个实施例的执行MD5摘要处理的MD5计算机构540(附图5所示的)的部件。该MD5计算机构包括预先加法计算器610、函数计算机构620以及后处理器630。预先加法计算器610执行三个参数X[k]、T[m,n]以及根变量A间的加法。X[k]以及T[m,n]分别是在该筹备的输入消息中的一个字以及从T表格处获得的一个常量,其为第m轮的第n次迭代所需要的。X[k]以及T[m,n]在控制器530的指导下由准备机构520提供。预先加法计算器可以并行执行加法同时函数计算机构620计算辅助函数F、G、H以及I。函数计算机构620包括F函数计算器622、G函数计算器624、H函数计算器626以及I函数计算器628。根据根变量B、C以及D的值,F、G、H以及I函数计算器分别执行包含在方程式1、2、3以及4中的操作。在一个实施例中,可以设置所有的函数计算器为每轮的每一个迭代而运行,但是仅仅选择一个结果通过后处理器630进行后加工处理。在另一个实施例中,可以使用函数选择器根据一轮计算来选择一个函数计算器,以便如MD5规范中所要求的那样,为该轮仅仅计算一个函数。
后处理器630包括函数结果选择器640、第一加法器650、移位器660以及第二加法器670。取决于一轮计算(轮回1的F函数、轮回2的G函数、轮回3的H函数以及轮回4的I函数),函数结果选择器640从函数计算机构620中的F、G、H以及I函数计算器选择一个结果。在硬件实现中,即使函数选择器用来为一个轮回选择所需要的函数计算器,但是仍然需要函数结果选择器。第一加法器650将来自函数结果选择器640的选择的函数结果和来自预先加法计算器610的输出数据相加。来自第一加法器650的输出数据通过移位器660左移S[m,n]位。准备机构520为第m轮的第n次迭代提供S[m,n]。来自移位器660的输出数据通过第二加法器670更进一步的加上根变量B的值以产生当前迭代的结果。迭代结果进一步用于更新根变量A的值。因为根变量的循环旋转(“A→B→C→D→A”),迭代结果可以用来直接更新根变量B的值。如附图6所示,MD5计算机构中的部件在控制器530的控制下一起工作以产生迭代结果。例如,控制器可以根据当前计算的轮回来指示函数结果选择器640从四个函数结果中选择一个结果。
如附图6所示,为了产生来自迭代n的结果,必须执行辅助函数、两个加法(通过第一以及第二加法器执行)以及一个移位的计算(因为三个参数的预先加法可以和辅助函数计算并行执行,所以它不需要被分开计数)。对于很多网络处理器,完成这些操作需要花费至少两个时钟周期。对于输入消息的一个16字块,存在四轮计算,并且每轮包括16次迭代。因此,为16字块产生128位摘要需要花费至少128个周期。改善MD5摘要处理速度的一种方法是流水线操作连续迭代的计算。因为来自迭代n的结果(其是迭代n+1的根变量B的值)是迭代n+1中的辅助函数的输入,所以连续迭代的计算不能容易地进行流水线操作。因此,根据附图6的MD5摘要系统具有每两个周期一次迭代的处理量。
可以看出任何两个连续的迭代共享两个公用输入,因为四个根变量A、B、C以及D的循环旋转是从一个迭代到下一个迭代执行的,例如A→B→C→D→A。例如,假定对迭代n中的辅助函数的输入的顺序是B-C-D(来自对于根变量B、C、D的存储器的值),那么对迭代n+1中的辅助函数的输入的顺序将是A-B-C(来自对于根变量A、B、C的存储器的值)。在这个实例中,迭代n以及n+1共享两个公用输入,来自对于根变量B以及C的存储器的值。因此,直到迭代n结束时其值不可用的唯一输入是A,因为它的值将在迭代n结束时更新。因为所有的四个辅助函数仅仅涉及逐位的操作,所以32位的每一位可以单独地处理。对于每一个位位置给出B以及C的值,其可从迭代n得到,在32位的每一位处的辅助函数的结果将是取决于根变量A中相应位的值的两个值中的一个,其在迭代n结束时将更新。因此,可以为迭代n+1的辅助函数计算两个值:一个对应于这样的A的值,即A中的每一位被设置为1,以及另一个对应于这样的A的值,即A中的每一位被设置为0。用这种方法,迭代n+1可以开始而迭代n仍然正在完成。例如,迭代n+1可以在迭代n的第二个周期中开始。当迭代n的结果变得可用时,它也能用于逐位的选择迭代n+1中的辅助函数的正确的输出。假定完成一个迭代需要花费两个时钟周期。如果第二个周期起始于对利用了来自先前迭代的结果的辅助函数的输出的选择,那么因此可以流水线操作连续的迭代。由这种方案产生的MD5摘要每一时钟周期可以获得一个迭代的处理量。
附图7描述了MD5计算机构540的一个实施例,其可以流水线操作MD5摘要处理。该MD5计算机构包括预先加法计算器710、函数计算机构720以及后处理器740。预先加法计算器710执行三个参数X[k]、T[m,n]以及根变量A间的加法。X[k]以及T[m,n]在控制器530的指导下通过准备机构520提供。预先加法计算器可以并行执行加法同时函数计算机构720计算辅助函数F、G、H以及I。函数计算机构720包括两组函数计算器。第一组包括F函数计算器1(722)、G函数计算器1(724)、H函数计算器1(726)以及I函数计算器1(728);以及第二组包括F函数计算器2(730)、G函数计算器2(732)、H函数计算器2(734)以及I函数计算器2(736)。根据根变量B、C以及D的值,F、G、H以及I函数计算器分别执行包含在方程式1、2、3以及4中的操作。第一组函数计算器计算F、G、H以及I函数,其中根变量B的所有位被设置为0;而第二组函数计算器计算这四个函数,其中根变量B的所有位被设置为1。当接收B、C以及D的值时,两组函数计算器可以并行运行。在一个实施例中,可以将每组中所有的四个函数计算器设置为为了每轮的每一个迭代而运行,但是仅仅从每个组中选择一个结果用于通过后处理器740进行后加工处理。在另一个实施例中,可以使用一个函数选择器来根据一轮计算为每一个组选择一个函数计算器,以便如MD5规范中所要求的那样,在每个组中为该轮而计算仅仅一个函数。
后处理器740包括两个函数结果选择器(函数结果选择器1(750)以及函数结果选择器2(755))、逐位选择器760、第一加法器765、移位器770以及第二加法器775。根据一轮计算(轮回1的F函数、轮回2的G函数、轮回3的H函数以及轮回4的I函数),函数结果选择器1(750)选择来自第一组函数计算器的第一结果。函数结果选择器2(755)从第二组函数计算器选择对应于第一结果的第二结果。在硬件实现中,即使函数选择器用来选择在一轮的每组函数计算器中所需要的函数计算器,但是每组函数计算器仍然需要函数结果选择器。通过函数结果选择器1选择的第一结果对应于B的值为0(即B的所有位被设置为0);而通过函数结果选择器2选择的第二结果对应于B的值为(232-1)(即B的所有位被设置为1)。根据来自先前迭代的结果,在控制器530指导下,逐位选择器760逐位选择第一结果和第二结果间正确的函数结果。第一加法器765将来自逐位选择器760的选择的函数结果和来自预先加法计算器710的输出数据相加。来自第一加法器765的输出数据通过移位器770左移S[m,n]位。准备机构520为第m轮的第n次迭代提供S[m,n]。来自移位器765的输出数据通过第二加法器775更进一步的加上根变量B的值以产生当前迭代的结果。迭代结果更进一步的用于更新根变量A的值。因为根变量的循环旋转(“A→B→C→D→A”),所以迭代结果可以用来直接更新根变量B的值。
如附图7所示MD5计算机构中的组件在控制器530的控制下一起工作以产生迭代结果。例如,控制器可以根据当前计算的轮回来指示函数结果选择器1(750)选择第一组中的四个函数计算器当中的一个结果。另外,控制器可以决定工作负荷如何分配给不同的时钟周期。假定用来产生迭代结果所需的所有操作可以在两个周期内完成。如果当逐位选择器760开始选择正确的函数结果时控制器开始第二周期(其需要来自先前迭代的结果),那么包含在第一周期中的操作不会取决于来自先前迭代的结果。因此,可以流水线操作连续的迭代。
附图8示出说明根据本发明一个实施例的流水线操作MD5摘要处理的表格。假定MD5摘要在周期1开始。在周期1,预先加法可以和辅助函数计算并行执行以进行迭代1。在两组(第一组对应于B的值为0而第二组对应于B的值为(232-1))中的辅助函数可以并行计算。同样在周期1,对于迭代1,可以从第一组函数中选择第一结果而从第二组函数中选择第二结果。在周期2,根据迭代1的根变量A的初始值可以在第一结果和第二结果之间逐位选择正确的函数结果。同样在周期2,为迭代1执行两个加法和一个移位(例如通过如附图7所示的第一加法器、第二加法器和移位器)。另外迭代2可以在周期2开始。预先加法、在两组中的辅助函数计算和来自两组中的每一组的函数结果选择可以在周期2中执行以进行迭代2。到周期2结束时,产生了迭代1的结果,其用来更新根变量A的值,因为A、B、C和D之间的循环旋转,上述根变量A的值依次变成迭代2的B的值。在周期3,根据来自迭代1的结果(其此刻是可用的)可以选择正确的函数结果,并且为迭代2执行两个加法和一个移位。在周期3的结尾,产生迭代2的结果,其最后变成迭代3的B的值。同样在周期3,可以开始迭代3。预先加法、在两组中的辅助函数计算和来自两组中的每一组的函数结果选择可以在周期3中执行以进行迭代3。处理一直继续直到筹备的输入消息中的所有16字块已经被处理。通过将根变量A、B、以及D中的位串连在一起而形成输入消息的最终128位摘要。使用这种流水线方式,实施MD5摘要的系统可以获得每一周期一个迭代的处理量。
附图9描述了能够执行MD5摘要的网络系统。该系统包括通过交换结构910(例如交叉或共享存储器交换结构)互连的线路卡920(“刀片”)的集合。各个线路卡可以位于相同的物理位置或不同的物理位置(例如不同的城市)。交换结构,例如可以符合通用交换接口(CSIX)或其它结构技术,例如HyperTransport、Infiniband、外设部件互连(PCI)、Packet-Over-SONET(同步光学网络)、RapidIO和/或UTOPIA(ATM的通用测试与操作PHY(物理层)接口)。
各个线路卡(例如920A)可以包括一或多个通过网络连接进行通信的物理层(PHY)装置922(例如光学、有线和无线PHY)。PHY在通过不同的网络介质传输的物理信号和由数字系统使用的位(例如“0”和“1”)之间转换。线路卡920也可以包括成帧器装置(例如以太网、同步光学网络(SONET)、高级数据链路(HDLC)成帧器或其它“层2”装置)924,其可以在帧上执行诸如错误检测和/或纠正之类的操作。示出的线路卡920还可以包括一或多个网络处理器926,其为经过一个或多个PHY 922接收的包执行包处理操作并且经过交换结构910将包送往提供输出接口的线路卡以转发该包。可能的是,一个或多个网络处理器926可以代替成帧器装置924执行“层2”的任务。
网络处理器926可以是互联网交换网络处理器(IXP)或其它具有不同设计特征的网络处理器。网络处理器的特征是在单个集成电路上的包处理引擎的集合。各个引擎可以提供多个运行的线程。另外,网络处理器包括核心处理器(即通常编制程序来执行包含在网络操作中的“控制面”任务)。然而,核心处理器还可以处理“数据面”任务。网络处理器926的特征还在于能够在该处理器及其它网络部件之间传输包的至少一个接口。例如,处理器可以包括交换结构接口910,其允许处理器926向其它处理器或连接到该结构的电路传输包。处理器926还可以包括允许处理器和物理层(PHY)和/或链路层装置(例如MAC或成帧器装置)进行通讯的接口。处理器926还包括用于例如和一个主机或其它网络处理器通信的接口(例如外设部件互连(PCI)总线接口)。此外,处理器926还包括由引擎共享的其它组件,例如存储控制器、哈希引擎以及内部暂时存储器(scratchpad memory)。
如附图9所示,每个线路卡920可以与执行MD5计算的至少一个MD5模块930(例如930A)可操作地耦合。在一个实施例中,MD5模块可以和线路卡分开。在另一个实施例中,MD5模块可以和线路卡集成在一起。此外,在一个实施例中,MD5模块可以是网络处理器926的一部分或PHY 922的一部分。而在另一个实施例中,MD5模块可以位于其它网络层,例如链路层、网络层和/或应用层。
尽管参考附图1-9描述了本发明公开内容的示例性实施例,但是本领域的普通技术人员容易理解,可以替代使用实施本发明的许多其它方法。例如,功能块或处理过程的的运行顺序可以改变,和/或描述的一些功能块或处理过程可以更改、删去或组合。
在先前的描述中,已经描述本发明公开内容的不同方面。为了说明的目的,阐述了具体的数目、系统以及配置以便提供对本发明公开内容的彻底的了解。然而,显而易见的是,得益于本公开内容的本领域的技术人员可以不需要特定的细节而实施本发明所公开的内容。在其它实例中,省略、简化、组合或拆分公知的特征、部件或模块,为的是使本发明的公开内容更加清楚。
这里描述的本公开内容描述的实施例可以在电路中实施,其包括硬布线电路、数字电路、模拟电路、可编程电路等等。它们还可以以计算机程序的形式实施。这种计算机程序可以用高级过程或面向对象编程语言编码。然而,如果需要的话,程序可以以汇编或机器语言来实施。该语言可以被编译或解释。另外,这些技术可以用于各式各样的网络环境。这种计算机程序可以存储在由通用或者专用可编程处理系统读取的存储介质或装置上(例如硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM装置、闪速存储器装置、数字通用盘(DVD)或其它存储装置),用于当存储介质或装置被处理系统读取时配置以及操作该处理系统以执行这里描述的过程。本公开内容的实施例还可以以机器可读的存储介质的形式来实施,其被配置与处理系统一起使用,其中如此配置存储介质以使处理系统以特定的以及预先确定的形式来操作,以执行这里描述的功能。
虽然已经结合说明性实施例描述了本公开内容,但是并非企图在限制意义上来解释这些描述。对本发明所属技术领域的技术人员而言显而易见的是,对说明性实施例以及本公开内容的其它实施例的各种修改都被认为落入本公开内容的精神和范围内。

Claims (45)

1.一种用于执行MD5摘要的设备,包括:
配置成存储根变量的变量存储装置;
配置成根据一部分所述根变量的值计算辅助函数的函数计算机构;
计算三个参数之间的和的预先加法计算器,其与通过函数计算机构执行的辅助函数计算相互并行;以及
后处理器,其用于至少部分地基于来自函数计算机构的输出数据以及来自预先加法计算器的输出数据产生MD5摘要处理的迭代结果,其中,所述迭代结果通过多个迭代产生,所述多个迭代包含迭代n和迭代n+1,每个迭代包括计算,且迭代n+1基于迭代n的结果,以及迭代n的计算由预先加法计算器执行,并与迭代n+1的计算并行,其中迭代n的计算通过计算根变量的实际值来计算,所述根变量的实际值是迭代n的结果。
2.根据权利要求1的设备,其中MD5摘要处理包括四轮计算,每轮包括十六次计算迭代。
3.根据权利要求1的设备,其中函数计算机构包括四个函数计算器,每个函数计算器用于一轮计算。
4.根据权利要求1的设备,其中所述迭代结果用来更新变量存储装置中的其中一个根变量。
5.根据权利要求1的设备,进一步地包括控制器,用于控制变量存储装置、函数计算机构、预先加法计算器以及后处理器以产生所述迭代结果,并且为产生输入消息的摘要而执行MD5摘要处理所需要的计算迭代。
6.根据权利要求5的设备,其中在控制器的控制下,在一个计算迭代结束以后并且下一个计算迭代开始之前,变量存储装置旋转所述根变量的值。
7.根据权利要求1的设备,其中后处理器包括:
函数结果选择器,用于对应于一轮计算、从函数计算机构中的四个函数计算器产生的结果中选择结果;
第一加法器,用于将来自预先加法计算器的输出数据和来自函数计算机构的选择结果相加;
移位器,用于将来自第一加法器的输出数据移位预定数目的位;以及 
第二加法器,用于将来自移位器的输出数据和所述根变量之一相加,以产生所述迭代结果。
8.根据权利要求1的设备,其中三个参数包括所述根变量之一、一个预先确定的参数以及一个来源于输入消息的参数。
9.一种用于执行消息摘要的设备,包括:
配置成存储根变量的变量存储装置;
函数计算机构,配置成根据一部分根变量的值计算第一组函数以及第二组函数;
预先加法计算器,用于计算一组参数之间的和,其与通过函数计算机构执行的辅助函数计算相互并行;以及
后处理器,用于至少部分地基于来自函数计算机构的输出数据以及来自预先加法计算器的输出数据产生消息摘要处理的迭代结果,其中,所述迭代结果通过多个迭代产生,所述多个迭代包含迭代n和迭代n+1,每个迭代包括计算,且迭代n+1基于迭代n的结果,以及迭代n的计算由预先加法计算器执行,并与迭代n+1的计算并行,其中迭代n的计算通过计算根变量的实际值来计算,所述根变量的实际值是迭代n的结果。
10.根据权利要求9的设备,其中消息摘要处理包括M轮计算,每轮包括N次计算迭代,其中M以及N是正整数。
11.根据权利要求9的设备,其中第一组以及第二组函数中的每一组包括K个函数计算器,第一组中的函数计算器以及第二组中的对应的函数计算器用于一轮计算,其中K是正整数。
12.根据权利要求9的设备,其中所述迭代结果用来更新变量存储装置中的所述根变量之一。
13.根据权利要求9的设备,进一步包括控制器,用于控制变量存储装置、函数计算机构、预先加法计算器以及后处理器以产生迭代结果,并且为产生输入消息的摘要而执行消息摘要处理所需要的计算迭代。
14.根据权利要求13的设备,其中在控制器的控制下,在一个计算迭代结束以后并且下一个计算迭代开始之前,变量存储装置旋转根变量的值。
15.根据权利要求13的设备,其中控制器控制预先加法计算器、函数计算机构以及后处理器以便流水线操作包含在连续迭代中的操作。 
16.根据权利要求9的设备,其中后处理器包括:
第一函数结果选择器,用于对应于一轮计算、在函数计算机构中的第一组函数产生的结果中选择第一结果;
第二函数结果选择器,用于对应于该轮计算、从函数计算机构中的第一组函数产生的结果中选择第二结果;
逐位选择器,用于根据来自先前迭代的迭代结果选择第一结果以及第二结果间的一组位,其中该组位形成最后的函数结果;
第一加法器,用于将来自预先加法计算器的输出数据和最后的函数结果相加;
移位器,用于将来自第一加法器的输出数据移位预定数目的位;以及
第二加法器,用于将来自移位器的输出数据和来自变量存储装置中的所述根变量之一相加以产生当前计算迭代的结果。
17.根据权利要求9的设备,其中参数组包括所述根变量之一、一个预先确定的参数以及一个来源于输入消息的参数。
18.一种用于执行MD5摘要的方法,包括:
在用于执行MD5摘要的设备处接收第一消息;
使用筹备机构来筹备第一消息,以产生第二消息和多个参数,其中第二消息的长度为16字块的倍数;
初始化存储在变量存储装置中的根变量;并且
至少部分地基于多个参数以及初始化的根变量为第二消息中的每个16字块执行四轮计算,以产生第一消息的摘要,其中每轮计算包括多个迭代,该多个迭代包含迭代n和迭代n+1,每个迭代包括计算,且迭代n+1基于迭代n的结果,以及迭代n的计算由预先加法计算器执行,并与迭代n+1的计算并行,其中迭代n的计算通过计算根变量的实际值来计算,所述根变量的实际值是迭代n的结果;以及
在每次计算迭代结束之后和在随后的迭代开始之前,使用控制器循环地旋转根变量。
19.根据权利要求18的方法,其中四轮计算的每一轮包括16次计算迭代。
20.根据权利要求18的方法,其中四轮计算包括四个函数的计算,每个函数对应于一轮以及同一函数用于同一轮的16次迭代。 
21.根据权利要求18的方法,其中摘要包括根变量的最终值。
22.根据权利要求19的方法,其中四轮中的计算迭代包括两阶段流水线,每个计算迭代包括第一阶段以及第二阶段。
23.根据权利要求22的方法,其中第一阶段以及第二阶段中的每一个在一个时钟周期内执行,迭代的第二阶段以及随后迭代的第一阶段在一个时钟周期内执行。
24.一种用于流水线操作消息摘要的方法,包括:
在用于执行消息摘要的设备处接收第一消息;
使用筹备机构筹备第一消息以产生第二消息和多个参数,其中第二消息的长度为N字块的倍数,其中N是正整数;
初始化存储在变量存储装置中的根变量;并且
至少部分地基于多个参数以及初始化的根变量,为第二消息中的每一个N字块执行M轮计算,以产生第一消息的摘要,其中M是正整数并且一轮计算包括多个计算迭代,该多个计算迭代包括迭代n和迭代n+1,且迭代n+1基于迭代n的结果,计算迭代使用两阶段流水线来进行计算,其中迭代n的第二阶段由预先加法计算器来执行,并与迭代n+1的第一阶段并行,其中迭代n的第二阶段包括计算根变量的实际值,所述根变量的实际值是迭代n的结果,以及迭代的结果用来更新所述根变量之一;以及
在计算迭代结束之后和在随后的迭代开始之前,使用控制器旋转根变量。
25.根据权利要求24的方法,其中摘要包括根变量的最终值。
26.根据权利要求24的方法,其中每个阶段在一个时钟周期内计算。
27.根据权利要求24的方法,其中第一阶段包括:
执行所述根变量之一、一个预先定义的参数以及来源于第二阶段的参数之间的预先加法;
计算第一组K个函数以及第二组K个函数,其中K是正整数并且需要每个函数用于一轮计算;以及
在从第一组处获得的结果中选择第一结果并且在从第二组处获得的结果中选择第二结果。
28.根据权利要求24的方法,其中第二阶段包括: 
根据来自先前迭代的最终结果,在第一函数结果和第二函数结果之间逐位选择在第一阶段获得的第一函数以及第二函数值;
将最终函数结果以及来自在第一阶段执行的预先加法的输出数据相加,以产生当前迭代的第一中间结果;
将第一中间结果移位预先确定的位数,以获得当前迭代的第二中间结果;以及
将第二中间结果与所述根变量之一相加,以产生当前迭代的最终结果。
29.一种网络系统,包括:
交换结构;
通过交换结构互连的多个线路卡;以及
多个MD5模块,每个模块和线路卡可操作地相耦合,用于执行MD5摘要,MD5模块包括:
配置成存储根变量的变量存储装置;
配置成根据一部分所述根变量的值计算辅助函数的函数计算机构;
计算三个参数之间的和的预先加法计算器,其与通过函数计算机构执行的辅助函数计算相互并行;以及
后处理器,用于至少部分地基于来自函数计算机构的输出数据以及来自预先加法计算器的输出数据产生MD5摘要处理的迭代结果,其中,所述迭代结果通过多个迭代产生,所述多个迭代包含迭代n和迭代n+1,每个迭代包括计算,且迭代n+1基于迭代n的结果,以及迭代n的计算由预先加法计算器执行,并与迭代n+1的计算并行,其中迭代n的计算通过计算根变量的实际值来计算,所述根变量的实际值是迭代n的结果。
30.根据权利要求29的网络系统,其中MD5摘要处理包括四轮计算,每轮包括十六次计算迭代。
31.根据权利要求29的网络系统,其中函数计算机构包括四个函数计算器,每个函数计算器用于一轮计算。
32.权利要求29的网络系统,其中所述迭代结果用来更新变量存储装置中的所述根变量之一。
33.根据权利要求29的网络系统,进一步包括控制器,用于控制变量存储装置、函数计算机构、预先加法计算器以及后处理器以产生迭代结果,并且为 产生输入消息的摘要而执行MD5摘要处理所需要的计算迭代。
34.权利要求33的网络系统,其中在控制器的控制下,在一个计算迭代结束以后并且在下一个计算迭代开始之前,变量存储装置旋转所述根变量的值。
35.根据权利要求29的网络系统,其中后处理器包括:
函数结果选择器,用于对应于一轮计算、从函数计算机构中的四个函数计算器产生的结果中选择结果;
第一加法器,用于将来自预先加法计算器的输出数据和来自函数计算机构的选择结果相加;
移位器,用于将来自第一加法器的输出数据移位预定数目的位;以及
第二加法器,用于将来自移位器的输出数据和所述根变量之一相加,以产生迭代结果。
36.根据权利要求29的网络系统,其中三个参数包括所述根变量之一、一个预先确定的参数以及一个来源于输入消息的参数。
37.一种网络系统、包括:
交换结构;
通过交换结构互连的多个线路卡;以及
多个消息摘要模块,每个模块和线路卡可操作地耦合,用于执行消息摘要,消息摘要模块包括:
配置成存储根变量的变量存储装置;
配置成根据一部分根变量的值计算第一组函数以及第二组函数的函数计算机构;
计算一组参数之间的和的预先加法计算器,其与通过函数计算机构执行的辅助函数计算相互并行;以及
后处理器,用于至少部分地基于来自函数计算机构的输出数据以及来自预先加法计算器的输出数据产生消息摘要处理的迭代结果,其中,所述迭代结果通过多个迭代产生,所述多个迭代包含迭代n和迭代n+1,每个迭代包括计算,且迭代n+1基于迭代n的结果,以及迭代n的计算由预先加法计算器执行,并与迭代n+1的计算并行,其中迭代n的计算通过计算根变量的实际值来计算,所述根变量的实际值是迭代n的结果。
38.根据权利要求37的网络系统,其中消息摘要处理包括M轮计算,每一 轮包括N次计算迭代,其中M以及N是正整数。
39.根据权利要求37的网络系统,其中第一组以及第二组函数中的每一个包括K个函数计算器,第一组中的函数计算器以及第二组中的对应的函数计算器用于一轮计算,其中K是正整数。
40.根据权利要求37的网络系统,其中所述迭代结果用来更新变量存储装置中的所述根变量之一。
41.根据权利要求37的网络系统,进一步包括控制器,用于控制变量存储装置、函数计算机构、预先加法计算器以及后处理器以产生迭代结果,并且为产生输入消息的摘要而执行消息摘要处理所需要的计算迭代。
42.根据权利要求41的网络系统,其中在控制器的控制下,在一个计算迭代结束以后并且下一个计算迭代开始之前,变量存储装置旋转根变量的值。
43.根据权利要求41的网络系统,其中控制器控制预先加法计算器、函数计算机构以及后处理器以便流水线操作包含在连续迭代中的操作。
44.根据权利要求37的网络系统,其中后处理器包括:
第一函数结果选择器,用于对应于一轮计算、从函数计算机构中的第一组函数产生的结果中选择第一结果;
第二函数结果选择器,用于对应于该轮计算、从函数计算机构中的第一组函数产生的结果中选择第二结果;
逐位选择器,用于根据来自先前迭代的迭代结果选择第一结果以及第二结果间的一组位,其中该组位形成最后的函数结果;
第一加法器,用于将来自预先加法计算器的输出数据和最后的函数结果相加;
移位器,用于将来自第一加法器的输出数据移位预定数目的位;以及
第二加法器,用于将来自移位器的输出数据和来自变量存储装置中的所述根变量之一相加,以产生当前计算迭代的结果。
45.根据权利要求37的网络系统,其中所述一组参数包括所述根变量之一、一个预先确定的参数以及一个来源于输入消息的参数。 
CN2005100980439A 2004-06-25 2005-06-24 用于执行md5摘要的设备和方法 Expired - Fee Related CN1735013B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/877464 2004-06-25
US10/877,464 US7627764B2 (en) 2004-06-25 2004-06-25 Apparatus and method for performing MD5 digesting

Publications (2)

Publication Number Publication Date
CN1735013A CN1735013A (zh) 2006-02-15
CN1735013B true CN1735013B (zh) 2012-04-11

Family

ID=34978853

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005100980439A Expired - Fee Related CN1735013B (zh) 2004-06-25 2005-06-24 用于执行md5摘要的设备和方法

Country Status (5)

Country Link
US (1) US7627764B2 (zh)
EP (1) EP1766854A1 (zh)
JP (1) JP4612680B2 (zh)
CN (1) CN1735013B (zh)
WO (1) WO2006011957A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US7725624B2 (en) * 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US20080140753A1 (en) * 2006-12-08 2008-06-12 Vinodh Gopal Multiplier
US20080181397A1 (en) * 2007-01-25 2008-07-31 John Wilson Dorminy Secure data transmission and storage using limited-domain functions
US8331555B1 (en) 2008-11-24 2012-12-11 Guidance-Tableau, Llc Hardware-implemented MD5 function
CN102946379A (zh) * 2012-10-16 2013-02-27 无锡江南计算技术研究所 多层摘要文件生成方法及文件正确性验证方法
CN103780615B (zh) * 2014-01-20 2017-02-01 五八同城信息技术有限公司 一种在多个服务器间客户端会话数据共享方法
CN107294958B (zh) * 2017-05-27 2020-05-22 宁波大学 基于全同态mac的消息完整性认证方法
US11621857B2 (en) * 2020-09-03 2023-04-04 Seagate Technology Llc Fingerprint and provenance for movable storage devices

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5970143A (en) * 1995-11-22 1999-10-19 Walker Asset Management Lp Remote-auditing of computer generated outcomes, authenticated billing and access control, and software metering system using cryptographic and other protocols
US6021201A (en) * 1997-01-07 2000-02-01 Intel Corporation Method and apparatus for integrated ciphering and hashing
US6266771B1 (en) * 1997-02-10 2001-07-24 The Regents Of The University Of California Probabilistic signature scheme
JP3988172B2 (ja) * 1997-04-23 2007-10-10 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US6091821A (en) 1998-02-12 2000-07-18 Vlsi Technology, Inc. Pipelined hardware implementation of a hashing algorithm
US6816968B1 (en) * 1998-07-10 2004-11-09 Silverbrook Research Pty Ltd Consumable authentication protocol and system
US6256664B1 (en) * 1998-09-01 2001-07-03 Bigfix, Inc. Method and apparatus for computed relevance messaging
US6832316B1 (en) * 1999-12-22 2004-12-14 Intertrust Technologies, Corp. Systems and methods for protecting data secrecy and integrity
GB0013356D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd A method of validating an encrypted message
GB0013349D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Pseudo-random number generator
US20020181476A1 (en) * 2001-03-17 2002-12-05 Badamo Michael J. Network infrastructure device for data traffic to and from mobile units
US6820081B1 (en) * 2001-03-19 2004-11-16 Attenex Corporation System and method for evaluating a structured message store for message redundancy
ATE389987T1 (de) * 2001-05-03 2008-04-15 Ericsson Telefon Ab L M Verfahren und vorrichtung zum schutz der datenintegrität
US7249255B2 (en) 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US20030191943A1 (en) * 2002-04-05 2003-10-09 Poisner David I. Methods and arrangements to register code
US7286664B1 (en) * 2002-06-03 2007-10-23 Winbond Electronics Corporation Efficient implementation of MD5 message-digest algorithm (RFC1321) on an 8 bit micro-controller
EP1429224A1 (en) * 2002-12-10 2004-06-16 Texas Instruments Incorporated Firmware run-time authentication

Also Published As

Publication number Publication date
US20060010327A1 (en) 2006-01-12
WO2006011957A1 (en) 2006-02-02
US7627764B2 (en) 2009-12-01
CN1735013A (zh) 2006-02-15
JP4612680B2 (ja) 2011-01-12
EP1766854A1 (en) 2007-03-28
JP2008500590A (ja) 2008-01-10

Similar Documents

Publication Publication Date Title
CN1735013B (zh) 用于执行md5摘要的设备和方法
CN107203365B (zh) 随机数的生成及获取方法和装置
US10833847B2 (en) Cryptographic hash generated using data parallel instructions
CN111464308A (zh) 一种实现多种哈希算法可重构的方法和系统
CN107135078B (zh) Pbkdf2密码算法加速方法及所用装置
CN105245343B (zh) 一种基于多变量密码技术的在线离线签名系统及方法
CN110058843A (zh) 伪随机数的生成方法、装置和服务器
CN108959128B (zh) Crypt-SHA512加密算法的加速装置与方法
CN110413257A (zh) 随机数产生电路
CN113721988B (zh) 基于芯片的工作量证明方法和用于工作量证明的芯片
FR2869174A1 (fr) Procede et dispositif pour determiner un resultat
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
JP2010134465A (ja) ハッシュ暗号装置及び方法
US7676399B2 (en) Method, apparatus and program for quantitative competition and recording medium having recorded thereon the program
Dobai et al. Evolutionary design of hash function pairs for network filters
CN116318660A (zh) 一种消息扩展与压缩方法及相关装置
JP2012033032A (ja) 情報処理装置および情報処理方法
EP3957023A1 (en) Low depth aes sbox architecture for area-constraint hardware
JP4120193B2 (ja) 暗号復号回路
US7181009B1 (en) Generating message digests according to multiple hashing procedures
CN116260572A (zh) 数据杂凑处理方法、数据验证方法及电子设备
CN106502627B (zh) 一种伪随机数种子生成方法
EP1202488B1 (en) Encryption sub-key generation circuit
CN114978473A (zh) 一种sm3算法的处理方法、处理器、芯片及电子设备
Michail et al. Novel high throughput implementation of SHA-256 hash function through pre-computation technique

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120411

Termination date: 20160624

CF01 Termination of patent right due to non-payment of annual fee