Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JPH0721761B2 - 素数判定器 - Google Patents
[go: Go Back, main page]

JPH0721761B2 - 素数判定器 - Google Patents

素数判定器

Info

Publication number
JPH0721761B2
JPH0721761B2 JP60122685A JP12268585A JPH0721761B2 JP H0721761 B2 JPH0721761 B2 JP H0721761B2 JP 60122685 A JP60122685 A JP 60122685A JP 12268585 A JP12268585 A JP 12268585A JP H0721761 B2 JPH0721761 B2 JP H0721761B2
Authority
JP
Japan
Prior art keywords
prime number
prime
determining
random
random number
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 - Lifetime
Application number
JP60122685A
Other languages
English (en)
Other versions
JPS61281333A (ja
Inventor
栄司 岡本
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP60122685A priority Critical patent/JPH0721761B2/ja
Publication of JPS61281333A publication Critical patent/JPS61281333A/ja
Publication of JPH0721761B2 publication Critical patent/JPH0721761B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は素数判定器に関し、特に暗号通信においてキー
として使用される素数の発生に利用される素数判定器に
関する。
〔従来技術とその問題点〕
暗号方式の中で、リベスト(Rivest)等が提案した、い
わゆるアールエスエー(RSA)公開鍵暗号系は暗号化キ
ーを秘密にしておく必要がなく、暗号通信におけるキー
の配送に有望視されている。RSA公開鍵暗号系はコミュ
ニケーションズ・オブ・ザ・エーシーエム(Communicat
ions of the ACM)(以下文献(1))の1978年21巻
2号の120頁から126頁に記載される。このRSA公開鍵暗
号系においてはキーを作るにあたり100桁程度の大きな
素数が必要である。大きな素数を生成するには、ランダ
ムに奇数を生成してその奇数が素数であるか否かを判定
することによって行われる。上記文献(1)によれば、
100桁の素数を生成するときには、1つの素数を得るま
でに約115回ぐらい素数候補を生成する必要がある。
従来から知られる素数判定法としては、上記文献(1)
に記載されるソロベイ・ストラッセンの方法や、ヌース
(Knuth)著、ジ・アート・オブ・コンピュータ・プロ
グラミング(The Art of Computer Programming)(以
下文献(2))の第2巻改訂版の374頁から380頁に記載
されるラビンの方法がある。
ここで上記ソロベイ・ストラッセンの方法を説明する。
下記にソロベイ・ストラッセンの方法のアルゴリズムを
示す。
ステップ101 N←素数候補(奇数)、I←0 ステップ102 乱数Aを生成 ステップ103 gcd(A,N)≠1ならば終了、Nは合成数 ステップ104 ならば終了、Nは合成数 ステップ105 I<Dならば、I←I+1としてステッ
プ102へ I≧Dならば終了、Nは素数 上記アルゴリズムにおいて、N,Iは変数、Dは100程度の
値、(A/N)はヤコビの記号、x≡y(mod n)はx−y
がnで割切れることを意味する。詳細については文献
(1)に記述されている。
かかるソロベイ・ストラッセンの方法においては、 Nが合成数のときは、小さい素数を因数に持つことが
多い、 素数でないのに 又は になることは非常に少ない、という特長を利用していな
い。
その結果、ソロベイ・ストラッセンの方法で素数を判定
する場合には多くの計算処理を行う必要があり、時間を
要するという問題を有していた。この問題は上記のラビ
ンの方法においても同様に発生する。
〔発明の目的〕
本発明の目的は、上記特長,を考慮して、計算処理
を少なくし素数判定時間を短縮した素数判定器を提供す
ることにある。
〔発明の構成〕
本発明の第1発明は、与えられた正整数Nが素数である
か否かを判定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
Nは素数でないと判定する第1判定手段と、 正整数の乱数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
き前記乱数発生手段の生成した整数Aに対して が1でもN−1でもなければNは素数でないと判定する
第2判定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
前記第2判定手段がNは素数でないと判定しなかったと
きに、Nを素数であると判定する第3判定手段、 とから構成したことを特徴としている。
また本発明の第2発明は、与えられた正整数Nが素数で
あるか否かを判定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
Nは素数でないと判定する第1判定手段と、 正整数の乱数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
き前記乱数発生手段の生成した整数Aに対してAN-1(mo
d N)が1でなければNは素数でないと判定する第2判
定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
前記第2判定手段がNは素数でないと判定しなかったと
きに、Nを素数であると判定する第3判定手段と、 から構成したことを特徴としている。
〔実施例〕
以下に、図面を用いて本発明の実施例を説明する。
第1図は本発明に係る素数判定器の装置構成を示すブロ
ック図である。この図において、乱数発生回路1は整数
の乱数Aを発生し、gcd(最大公約数)計算回路2は2
つの整数の最大公約数を計算し、巾乗剰余回路3は巾乗
剰余を計算する機能を有する。ROM4はプログラムや定数
を記憶し、RAM5は上記計算で得たデータを一時的に記憶
し、プロセッサ6はデータの授受や各回路の動作の制
御、判断等を行うものである。上記のような装置構成は
例えば計算機システムによって実現される。
第2図、第3図は本発明における第1発明、第2発明の
素数判定器の動作を説明するためのフローチャートであ
り、いずれの素数判定器も第1図で示した構成を有す
る。
まず第2図のフローチャートによって第1発明に係る素
数判定器の動作について説明する。第1図において、バ
ス7を通して外部から与えられた素数候補(奇数の正整
数)を変数Nに置き、且つカウンタをなす変数Iを0に
置くと共にROM4内に記憶されている小さい素数の積(正
整数)を変数Nに置く(ステップ201)。この場合Mは
例えば100以下の素数の積である。上記NとMはgcd計算
回路2に送られる。gcd計算回路2はNとMの最大公約
数gcd(M,N)を求め、gcd(M,N)を変数Gに置く(ステ
ップ202)。プロセッサ6はgcd計算回路2で求められた
Gが1でなければNは素数ではない、すなわち合成数で
あると判断する(ステップ203)。一方Gが1であれ
ば、プロセッサ6は、乱数発生回路1によって乱数Aを
発生させ(ステップ204)、この発生した乱数Aと上記
Nとを巾乗剰余回路3に送り、この巾乗剰余回路3にお
いて なるBを計算させる(ステップ205)。求めたBが1で
もN−1でもなければ、プロセッサ6はNは合成数であ
ると判断する(ステップ206)。一方Bが1又はN−1
であるときには、I=I+1として(ステップ207)、
ステップ204に戻り、乱数発生回路1で再び新しい乱数
Aを発生し、上記処理を繰返す。そしてIが予め定めら
れた定数Dと等しくなるまでNが合成数と判断されなか
ったならば(ステップ208)、プロセッサ6は、Nは素
数であると判断する(ステップ209)。この場合Dは例
えば20程度に定められるが、前記の性質上5程度に定
めることができる。このようにして得られたプロセッサ
6の判断結果はバス7を通じて外部回路に通知される。
上記の素数判定器の動作のアルゴリズムを示すと下記の
如くなる。
ステップ201 N←素数候補、I←0、M←小さい素数
の積 ステップ202,203 gcd(M,N)≠1ならば終了、Nは合
成数 ステップ204 乱数Aを生成 ステップ205,206 ならば終了、Nは合成数 ステップ207,208 I<Dならば、I←I+1としてス
テップ204へ I≧Dならば終了、Nは素数 かかるアルゴリズムはROM4に記憶されたプログラムに基
づきプロセッサ6が乱数発生回路1等の構成要素を動作
させて実行する。
上記アルゴリズムを従来のソロベイ・ストラッセン法の
アルゴリズムと比較すると、前記を考慮してステップ
202,203を入れて高速化を図っている。また前記ステッ
プ104において、(A/N)が±1に限られることから、こ
れを用いて か否かを調べるようにする。そうすると前記に基づい
てNが合成数であるならばこれをほとんど検出すること
ができる。従ってD個の乱数Aすべてに対して であるならば、Nは素数と判断することができる。この
結果、前記ステップ104はステップ205,206に置き換えら
れ、(A/N)を計算する必要がなくなる。またステップ1
03はステップ202,203を設けると、その必要性が少なく
なる。このことは、もしgcd(A,N)≠1であるならば、
前記によりNは小さい因数を含むことが多く、そのと
きはステップ202,203でNは合成数であると判定される
からである。そこで、ステップ103を除いてステップ20
2,203を設けると、本来ステップ103はステップ202,203
よりもアルゴリズム上通過回数が多いので、全体として
計算処理量が少なくなる。なおステップ103で合成数と
判定されるNは、必ずステップ205,206で合成数と判定
されるので、ステップ103を除いても素数判定能力は変
わらない。
以上により、上記実施例における素数判定器のアルゴリ
ズムは従来法のアルゴリズムに比べて、計算処理量が少
なくなり、高速に動作する。
上記の如く動作する素数判定器を機能ブロック図で示す
と第4図のようになる。第4図において、8は第1判定
手段で、gcd計算回路2とROM4とRAM5とプロセッサ6か
ら構成され、前記ステップ201,202,203を実行する。9
は乱数発生手段で、乱数発生回路1で構成され、ステッ
プ204を実行する。10は第2判定手段で、巾乗剰余回路
3とRAM5とプロセッサ6とから構成され、前記ステップ
205,206を実行する。11は第3判定手段で、ROM4とROM5
とプロセッサ6から構成され、前記ステップ207,208を
実行する。このように本実施例では第1、第2、第3の
判定手段を備え、第1判定手段8においてNは非合成数
であると判定されたときに、第2判定手段10と第3判定
手段11による判定動作を繰返すように構成した。
次に第3図のフローチャートによって第2発明に係る素
数判定器について説明する。この第2発明は第1発明を
改良したものである。第3図において、ステップ301,30
2,303,304,307,308,309は、第2図で説明したステップ2
01,202,203,204,207,208,209と全く同じであるため説明
を省略する。この第2発明に係る素数判定器では、ステ
ップ305において、巾乗剰余回路3を用いてB=AN-1(m
od N)なるBを計算で求め、このBが1であるか否かに
よってNが合成数であるか否かを判断するように構成さ
れる(ステップ306)。
ここで上記素数判定器の動作のアルゴリズムを示すと、 ステップ301 N←素数候補、I←0、M←小さい素数
の積 ステップ302,303 gcd(M,N)≠1ならば終了、Nは合
成数 ステップ304 乱数Aを生成 ステップ305,306 ならば終了、Nは合成数 ステップ307,308 I<DならばI←I+1としてステ
ップ304へ I≧Dならば終了、Nは素数 となる。従って前記第1発明に係る素数判定器と同様
に、且つ前記を考慮してステップ305,306を設けるよ
うにしたため、計算処理量を少なくし、高速に素数の判
定動作を行うことができる。
また第2発明に係る素数判定器を機能ブロック図で表わ
すと前記第1発明と同様に第4図に示すようになる。た
だしこの場合の第2判定手段10は上記ステップ305,306
を実行することになる。
上記各発明に係る素数判定器において、乱数発生回路1
で発生する乱数は、自然乱数、疑似乱数であってもよ
い。またgcd計算回路2については前記文献(2)の316
頁〜339頁に記載され、巾乗余剰回路3は例えば情報処
理学会論文誌第24巻6号764頁〜771頁(1983)に記載さ
れているものを用いることができる。更に乱数発生回路
1、gcd計算回路2、巾乗剰余回路3はプロセッサ6、
又は別の専用プロセッサで実行させることもできる。
なお、上記各素数判定器は、乱数発生回路1で発生され
る乱数を素数候補として用いて上記素数判定を行うよう
に構成すれば、容易に素数発生器として構成し直すこと
ができる。
〔発明の効果〕
以上説明した通り本発明によれば、従来の素数判定器に
対してその数及び計算上の特長を考慮して若干の改良を
施すことによって計算処理量を著しく少なくすることが
でき、これによって高速に素数判定を行うことができ
る。
【図面の簡単な説明】
第1図は素数判定器の装置構成図、 第2図は第1発明に係る素数判定器の判定動作を示すフ
ローチャート、 第3図は第2発明に係る素数判定器の判定動作を示すフ
ローチャート、 第4図は第1発明及び第2発明に係る素数判定器の機能
ブロック図である。 1……乱数発生回路 2……gcd計算回路 3……巾乗剰余回路 4……ROM 5……RAM 6……プロセッサ 8……第1判定手段 9……乱数発生手段 10……第2判定手段 11……第3判定手段

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】与えられた正整数Nが素数であるか否かを
    判定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
    Nは素数でないと判定する第1判定手段と、 正整数の乱数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
    き前記乱数発生手段の生成した整数Aに対して が1でもN−1でもなければNは素数でないと判定する
    第2判定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
    前記第2判定手段がNは素数でないと判定しなかったと
    きに、Nを素数であると判定する第3判定手段、 とから成ることを特徴とする素数判定器。
  2. 【請求項2】与えられた正整数Nが素数であるか否かを
    判定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
    Nは素数でないと判定する第1判定手段と、 正整数の乱数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
    き前記乱数発生手段の生成した整数Aに対してAN-1(mo
    d N)が1でなければNは素数でないと判定する第2判
    定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
    前記第2判定手段がNは素数でないと判定しなかったと
    きに、Nを素数であると判定する第3判定手段と、 から成ることを特徴とする素数判定器。
JP60122685A 1985-06-07 1985-06-07 素数判定器 Expired - Lifetime JPH0721761B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60122685A JPH0721761B2 (ja) 1985-06-07 1985-06-07 素数判定器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60122685A JPH0721761B2 (ja) 1985-06-07 1985-06-07 素数判定器

Publications (2)

Publication Number Publication Date
JPS61281333A JPS61281333A (ja) 1986-12-11
JPH0721761B2 true JPH0721761B2 (ja) 1995-03-08

Family

ID=14842089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60122685A Expired - Lifetime JPH0721761B2 (ja) 1985-06-07 1985-06-07 素数判定器

Country Status (1)

Country Link
JP (1) JPH0721761B2 (ja)

Also Published As

Publication number Publication date
JPS61281333A (ja) 1986-12-11

Similar Documents

Publication Publication Date Title
Comba Exponentiation cryptosystems on the IBM PC
Khalique et al. Implementation of elliptic curve digital signature algorithm
Odlyzko Discrete logarithms in finite fields and their cryptographic significance
Handschuh et al. Smart card crypto-coprocessors for public-key cryptography
US6266688B1 (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
Robshaw et al. Elliptic curve cryptosystems
US6795553B1 (en) Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
US7000110B1 (en) One-way function generation method, one-way function value generation device, proving device, authentication method, and authentication device
Bernstein et al. On the correct use of the negation map in the Pollard rho method
US20070064930A1 (en) Modular exponentiation with randomized exponent
US20020041683A1 (en) Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system
EP1038371A1 (en) Transformation methods for optimizing elliptic curve cryptographic computations
EP0952697B1 (en) Elliptic curve encryption method and system
US7346637B2 (en) Polynomial time deterministic method for testing primality of numbers
JPH10500502A (ja) 離散対数をベースとした公開キーによる暗号化方法
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
US20070206789A1 (en) Elliptic curve cryptosystem optimization using two phase key generation
Nikolay Digital signature scheme based on a new hard problem
US6609141B1 (en) Method of performing modular inversion
JPH0721761B2 (ja) 素数判定器
JPH0766322B2 (ja) 素数判定器
US20040028223A1 (en) Generation of a random number that is non-divisible by a set of prime numbers
CN101243388A (zh) 用于在加密计算中执行求逆运算的电路结构和方法
Moldovyan et al. Short signatures from the difficulty of factoring problem