×

High-speed modular multiplication apparatus achieved in small circuit

  • US 6,366,940 B1
  • Filed: 03/02/1999
  • Issued: 04/02/2002
  • Est. Priority Date: 03/02/1998
  • Status: Expired due to Fees
First Claim
Patent Images

1. A modular multiplication apparatus for calculating a congruent value of a modulo P multiplication of a product of a multiplicand a and a kb-bit multiplier b, wherein P is k-bit, the congruent value being obtained from a following formula:

  • accumulated





    value
    =

    i=0[[kb/s]]






    C

    (i)
    *b

    [s*i+s-1;

    s*i
    ]
    ,
    embedded imagewhere [[kb/s]] represents integers included in quotient kb/s, i represents integers in a range of 0 to [[kb/s]], C(i) is represented by a recurrence formula, and C(i)=a (i=0) C(i)=(C(i−

    1)*2s) mod P (i≧

    1) C(i) (intermediate value) is a congruent value of a modulo P multiplication of a product (a preceding intermediate value*2s), wherein the congruent value is calculated recurrently, an initial intermediate value is the multiplicand a, and the product being equal to the preceding intermediate value shifted s bits, b[s*i+s−

    1;

    s*i] represents s-bit partial multipliers included in the multiplier b at places from 2s*i+s−

    1
    to 2s*i, the modular multiplication apparatus comprising;

    a table means which prestores residues of modulo p multiplications of (m-bit value)*2k, wherein m is an integer s or larger;

    an intermediate value calculation means for outputting the multiplicand a as an intermediate value C(0) first time (i=0) and second time and after (i≧

    1), performing a shift of s bits on a preceding intermediate value C(i−

    1) to acquire a shifted intermediate value, referring to the table means to read out a residue corresponding to in bits adjacent to lower k bits of the shifted intermediate value, and obtaining another intermediate value C(i) by adding up the read-out residue and the lower k bits; and

    an accumulation means for obtaining the accumulated value by detecting, in order from lower bits, partial multipliers b[s*i+s−

    1;

    s*i] which are s-bit parts making up the multiplier b, calculating a partial product C(i)*b[s*i+s−

    1;

    s*i] for each of the first time (i=0) through the last time (i=[[kb/s]], and accumulating the calculated partial products.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×