JP5603533B2 - 素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 - Google Patents
素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 Download PDFInfo
- Publication number
- JP5603533B2 JP5603533B2 JP2007051062A JP2007051062A JP5603533B2 JP 5603533 B2 JP5603533 B2 JP 5603533B2 JP 2007051062 A JP2007051062 A JP 2007051062A JP 2007051062 A JP2007051062 A JP 2007051062A JP 5603533 B2 JP5603533 B2 JP 5603533B2
- Authority
- JP
- Japan
- Prior art keywords
- prime number
- prime
- bit length
- length
- calculated
- 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.)
- Active
Links
Images
Description
(2)p2=2×r×p+1を導出する。
(3)p2が所定の条件を満たしている場合(Pocklington法による素数判定 法)、p2は素数となる。p2が所定の条件を満たしていない場合、(1)に戻り、 一連の処理をやり直す。なお、所定の条件には、たとえば、非特許文献1のp144 .4.40に記載された条件を用いることができる。
(4)p2が最終的に求めたいビット長の素数となっていない場合、p=p2として(1 )に戻り、一連の処理を繰り返す。
(2)Q[bit]の乱数Rを生成する。
(3)(2)で生成された乱数Rを(1)のテーブルに保持されている各要素で除算し、 割り切れなければ乱数Rが求める素数となる。また、割り切れたら(2)に戻り、新 たな乱数Rを生成して、処理を繰り返す。なお、本出願においては、短い素数を生成 する手法は上記第2の手法に限らず、いかなる手法を用いてもよい。
まず、この発明の実施の形態にかかる素数生成装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかる素数生成装置のハードウェア構成を示すブロック図である。
つぎに、素数テーブル200のデータ構造について説明する。図2は、素数テーブル200のデータ構造を示す説明図である。図2において、素数テーブル200は、2[bit]〜17[bit]までの各ビット数によって表現可能な素数を保持している。
つぎに、この発明の実施の形態にかかる素数生成装置100の機能的構成について説明する。図3は、この発明の実施の形態にかかる素数生成装置100の機能的構成を示すブロック図である。図3において、素数生成装置100は、素数テーブル200と、受付部301と、算出部302と、素数生成部303と、乱数生成部304と、出力部305と、を備えている。
また、以下に示す式を用いることとしてもよい。
Length(ri)={Length(Pi)−m}/2…(3’)
また、M=1,2とし、以下に示す式を用いることとしてもよい。
Length(ri)={Length(Pi)+M}/2…(3”)
つぎに、この発明の実施の形態にかかる素数生成装置100の素数生成処理手順について説明する。図4は、この発明の実施の形態にかかる素数生成装置100の素数生成処理手順を示すフローチャートである。
つぎに、算出部302による上述したステップS402における素数{P1,…,Pn-1}の各ビット長の算出処理手順について説明する。図5は、ステップS402における算出処理手順を示すフローチャートである。ここでは、上記式(1)を用いて素数{P1,…,Pn-1}の各ビット長を算出する場合を例に挙げて説明する。なお、Pnとして514[bit]の素数を生成するものとし、P1として生成可能な短い素数の最大長が34[bit]であった場合の例である。
前記受付工程によって指定を受け付けた素数Pnのビット長に従って、素数{P1,…,Pn-1}の各ビット長を算出させる算出工程と、
前記算出工程によって算出された前記素数{P1,…,Pn-1}の各ビット長に基づいて、素数Pi(1≦i≦n−1)と乱数riとを利用することにより、前記素数Piのビット長より長いビット長でかつ前記素数Piより大きな値の素数Pi+1を順次生成して、前記素数Pnを生成させる素数生成工程と、
をコンピュータに実行させることを特徴とする素数生成プログラム。
前記素数生成工程は、
前記素数P1のビット長によって特定される素数を生成し、前記乱数生成工程によって生成された乱数{r1,…,rn-1}を用いて、前記素数Piと前記乱数riとを乗算することにより、前記素数Pnを生成させることを特徴とする付記1に記載の素数生成プログラム。
2ビット以上のビット長によって表現可能な素数を記憶する素数テーブルを参照することにより、前記素数P1のビット長によって特定される素数を生成させることを特徴とする付記2に記載の素数生成プログラム。
前記乱数riのビット長より前記素数Piのビット長が長くなる前記素数{P1,…,Pn-1}の各ビット長を算出させることを特徴とする付記1〜3のいずれか一つに記載の素数生成プログラム。
前記Pi+1のビット長が前記素数Piのビット長の2倍程度の長さとなる前記素数{P1,…,Pn-1}の各ビット長を算出させることを特徴とする付記4に記載の素数生成プログラム。
下記式(1)により、前記素数Pnのビット長に従って、前記素数{P1,…,Pn-1}の各ビット長を算出させることを特徴とする付記1〜3のいずれか一つに記載の素数生成プログラム。
Length(Pi)=[Length(Pi+1)+1]/2+1・・・(1)
ただし、Length(Pi)は素数Piのビット長とする。
下記式(2)により、前記素数Pnのビット長に従って、前記素数{P1,…,Pn-1}の各ビット長を算出させることを特徴とする付記1〜3のいずれか一つに記載の素数生成プログラム。
Length(Pi)=Length(Pi+1)/2+1・・・(2)
ただし、Length(Pi)は素数Piのビット長とする。
前記素数P1のビット長が30数ビット程度の長さとなる前記素数{P1,…,Pn-1}の各ビット長を算出させることを特徴とする付記1〜7のいずれか一つに記載の素数生成プログラム。
Pocklington法を利用した素数判定手法により、前記素数Pnを確定的に生成させることを特徴とする付記1〜8のいずれか一つに記載の素数生成プログラム。
前記受付手段によって指定を受け付けた素数Pnのビット長に従って、素数{P1,…,Pn-1}の各ビット長を算出する算出手段と、
前記算出手段によって算出された前記素数{P1,…,Pn-1}の各ビット長に基づいて、素数Pi(1≦i≦n−1)と乱数riとを利用することにより、前記素数Piのビット長より長いビット長でかつ前記素数Piより大きな値の素数Pi+1を順次生成して、前記素数Pnを生成する素数生成手段と、
を備えることを特徴とする素数生成装置。
前記受付工程によって指定を受け付けた素数Pnのビット長に従って、素数{P1,…,Pn-1}の各ビット長を算出する算出工程と、
前記算出工程によって算出された前記素数{P1,…,Pn-1}の各ビット長に基づいて、素数Pi(1≦i≦n−1)と乱数riとを利用することにより、前記素数Piのビット長より長いビット長でかつ前記素数Piより大きな値の素数Pi+1を順次生成して、前記素数Pnを生成する素数生成工程と、
を含んだことを特徴とする素数生成方法。
200 素数テーブル
301 受付部
302 算出部
303 素数生成部
304 乱数生成部
305 出力部
Claims (4)
- プロセッサとメモリとを有するコンピュータに、
前記プロセッサにより、素数Pnのビット長の指定を受け付けて、前記メモリに記憶し、
前記プロセッサにより、指定を受け付けた前記素数Pnのビット長に基づいて、前記素数Pnを生成するために途中で生成される素数{P1,P2,…,Pn-1}の各素数のビット長を、素数P1のビット長が所定長以下となるまで、素数P i+1 (iは、1以上(n−1)以下の自然数)のビット長が素数P i のビット長の2倍程度の長さとなるように順次算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数Piのビット長に基づいて、前記素数Piに乗算して前記素数Pi+1を算出するための乱数riのビット長を算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数P1のビット長の乱数を生成することにより、前記所定長よりも短いビット長の素数を記憶するテーブルを参照して、前記テーブルに記憶されているいずれの素数でも割り切れない乱数を前記素数P1として算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記乱数riのビット長に基づいて、当該ビット長の前記乱数riを生成して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数P1に基づいて、生成した前記乱数riと前記素数Piとを乗算して前記素数Piより大きな値の前記素数Pi+1を順次算出することにより、前記素数Pnを算出して、前記メモリに記憶する、
処理を実行させることを特徴とする素数生成プログラム。 - 請求項1に記載の素数生成プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
- 素数P n のビット長の指定を受け付ける受付部と、
前記受付部によって指定を受け付けた前記素数P n のビット長に基づいて、前記素数P n を生成するために途中で生成される素数{P 1 ,P 2 ,…,P n-1 }の各素数のビット長を、素数P 1 のビット長が所定長以下となるまで、素数P i+1 (iは、1以上(n−1)以下の自然数)のビット長が素数P i のビット長の2倍程度の長さとなるように順次算出する第1の算出部と、
前記第1の算出部によって算出された前記素数P i のビット長に基づいて、前記素数P i に乗算して前記素数P i+1 を算出するための乱数r i のビット長を算出する第2の算出部と、
前記第1の算出部によって算出された前記素数P 1 のビット長の乱数を生成することにより、前記所定長よりも短いビット長の素数を記憶するテーブルを参照して、前記テーブルに記憶されているいずれの素数でも割り切れない乱数を前記素数P 1 として算出する第3の算出部と、
前記第2の算出部によって算出された前記乱数r i のビット長に基づいて、当該ビット長の前記乱数r i を生成する生成部と、
前記第3の算出部によって算出された前記素数P 1 に基づいて、前記生成部によって生成された前記乱数r i と前記素数P i とを乗算して前記素数P i より大きな値の前記素数P i+1 を順次算出することにより、前記素数P n を算出する第4の算出部と、
を備えることを特徴とする素数生成装置。 - プロセッサとメモリとを有するコンピュータが、
前記プロセッサにより、素数P n のビット長の指定を受け付けて、前記メモリに記憶し、
前記プロセッサにより、指定を受け付けた前記素数P n のビット長に基づいて、前記素数P n を生成するために途中で生成される素数{P 1 ,P 2 ,…,P n-1 }の各素数のビット長を、素数P 1 のビット長が所定長以下となるまで、素数P i+1 (iは、1以上(n−1)以下の自然数)のビット長が素数P i のビット長の2倍程度の長さとなるように順次算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数P i のビット長に基づいて、前記素数P i に乗算して前記素数P i+1 を算出するための乱数r i のビット長を算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数P 1 のビット長の乱数を生成することにより、前記所定長よりも短いビット長の素数を記憶するテーブルを参照して、前記テーブルに記憶されているいずれの素数でも割り切れない乱数を前記素数P 1 として算出して、前記メモリに記憶し、
前記プロセッサにより、算出した前記乱数r i のビット長に基づいて、当該ビット長の前記乱数r i を生成して、前記メモリに記憶し、
前記プロセッサにより、算出した前記素数P 1 に基づいて、生成した前記乱数r i と前記素数P i とを乗算して前記素数P i より大きな値の前記素数P i+1 を順次算出することにより、前記素数P n を算出して、前記メモリに記憶する、
処理を実行することを特徴とする素数生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007051062A JP5603533B2 (ja) | 2007-03-01 | 2007-03-01 | 素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007051062A JP5603533B2 (ja) | 2007-03-01 | 2007-03-01 | 素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008216411A JP2008216411A (ja) | 2008-09-18 |
JP5603533B2 true JP5603533B2 (ja) | 2014-10-08 |
Family
ID=39836564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007051062A Active JP5603533B2 (ja) | 2007-03-01 | 2007-03-01 | 素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5603533B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5744673B2 (ja) * | 2011-08-10 | 2015-07-08 | キヤノン株式会社 | 情報処理システム、情報処理方法、及びプログラム |
WO2016170920A1 (ja) * | 2015-04-21 | 2016-10-27 | 日立オートモティブシステムズ株式会社 | 角形二次電池 |
-
2007
- 2007-03-01 JP JP2007051062A patent/JP5603533B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2008216411A (ja) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Öztürk et al. | Low-power elliptic curve cryptography using scaled modular arithmetic | |
US20110161390A1 (en) | Modular multiplication processing apparatus | |
US20030081771A1 (en) | Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device | |
US20160248585A1 (en) | Cryptographic apparatus and method | |
JP4988448B2 (ja) | 一括検証装置、プログラム及び一括検証方法 | |
US20070053506A1 (en) | Elliptic curve encryption processor, processing method of the processor using elliptic curves, and program for causing a computer to execute point scalar multiplication on elliptic curves | |
JP5603533B2 (ja) | 素数生成プログラム、該プログラムを記録した記録媒体、素数生成装置および素数生成方法 | |
JP3833412B2 (ja) | 有限体演算における表現データ生成装置および方法 | |
US6609141B1 (en) | Method of performing modular inversion | |
JP2004004341A (ja) | べき乗剰余計算装置、べき乗剰余計算方法及びプログラム | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
JP2004125891A (ja) | べき乗剰余演算器 | |
JP4676873B2 (ja) | パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム | |
JP5744673B2 (ja) | 情報処理システム、情報処理方法、及びプログラム | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
JP2007218997A (ja) | 素数生成装置、プログラム及び方法 | |
JP2004334212A (ja) | モンゴメリ掛け算器及び掛け算方法 | |
US7480380B2 (en) | Method for efficient generation of modulo inverse for public key cryptosystems | |
JP4836676B2 (ja) | 素数生成プログラム | |
JP2000200038A (ja) | 素数生成方法及び装置並びにrsa暗号化方法及び記録媒体 | |
Lu et al. | A note on efficient implementation of prime generation algorithms in small portable devices | |
JP3274395B2 (ja) | 除算装置、除算方法、除算プログラムを記録した記録媒体、及び電子署名生成方法 | |
US20040139139A1 (en) | Exponent calculation apparatus and method, and program | |
JPH1078864A (ja) | 乱数生成器 | |
JP5505173B2 (ja) | リスト生成装置、リスト生成方法およびリスト生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120515 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120710 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120731 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121031 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20121107 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20130322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140822 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5603533 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |