21 B92 B92 Quantum cryptography simulator

Similar documents
:30 12:00 I. I VI II. III. IV. a d V. VI

21 Quantum calculator simulator based on reversible operation

C¥×¥í¥°¥é¥ß¥ó¥° ÆþÌç

C による数値計算法入門 ( 第 2 版 ) 新装版 サンプルページ この本の定価 判型などは, 以下の URL からご覧いただけます. このサンプルページの内容は, 新装版 1 刷発行時のものです.

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

‚æ2›ñ C„¾„ê‡Ìš|

- 2 Copyright (C) All Rights Reserved.



,,,,., C Java,,.,,.,., ,,.,, i


:30 12:00 I. I VI II. III. IV. a d V. VI

‚æ4›ñ

C言語によるアルゴリズムとデータ構造

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v

MultiPASS Suite 3.20 使用説明書

[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±

I


21 Key Exchange method for portable terminal with direct input by user

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2


ii

超初心者用


2

untitled

i

I ASCII ( ) NUL 16 DLE SP P p 1 SOH 17 DC1! 1 A Q a q STX 2 18 DC2 " 2 B R b

i


Wide Scanner TWAIN Source ユーザーズガイド

4 i

Microsoft Word - C.....u.K...doc

j x j j j + 1 l j l j = x j+1 x j, n x n x 1 = n 1 l j j=1 H j j + 1 l j l j E

kiso2-06.key

C 2 / 21 1 y = x 1.1 lagrange.c 1 / Laglange / 2 #include <stdio.h> 3 #include <math.h> 4 int main() 5 { 6 float x[10], y[10]; 7 float xx, pn, p; 8 in


tuat1.dvi

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

P02.ppt

untitled

入門ガイド

MultiPASS B-20 MultiPASS Suite 3.10使用説明書

<4D F736F F F696E74202D C835B B E B8CDD8AB B83685D>

18 C ( ) hello world.c 1 #include <stdio.h> 2 3 main() 4 { 5 printf("hello World\n"); 6 } [ ] [ ] #include <stdio.h> % cc hello_world.c %./a.o

/* sansu1.c */ #include <stdio.h> main() { int a, b, c; /* a, b, c */ a = 200; b = 1300; /* a 200 */ /* b 200 */ c = a + b; /* a b c */ }

SC-85X2取説


PowerPoint Presentation

初心者にもできるアメブロカスタマイズ新2016.pages

特集_03-07.Q3C

c-all.dvi

kiso2-09.key

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

9 8 7 (x-1.0)*(x-1.0) *(x-1.0) (a) f(a) (b) f(a) Figure 1: f(a) a =1.0 (1) a 1.0 f(1.0)

QR


r07.dvi

untitled

ohp07.dvi

Copyright All Rights Reserved. -2 -!

ONLINE_MANUAL

ONLINE_MANUAL

P05.ppt

「産業上利用することができる発明」の審査の運用指針(案)

28 Horizontal angle correction using straight line detection in an equirectangular image

i

IPA:セキュアなインターネットサーバー構築に関する調査

卒 業 研 究 報 告.PDF

untitled

double 2 std::cin, std::cout 1.2 C fopen() fclose() C++ std::fstream 1-3 #include <fstream> std::fstream fout; int a = 123; fout.open( "data.t

PowerPoint プレゼンテーション

Microsoft Word - 最終版 バックせどりismマニュアル .docx

実際の株価データを用いたオプション料の計算

XMPによる並列化実装2

o 2o 3o 3 1. I o 3. 1o 2o 31. I 3o PDF Adobe Reader 4o 2 1o I 2o 3o 4o 5o 6o 7o 2197/ o 1o 1 1o



II

1 4 2 EP) (EP) (EP)

これわかWord2010_第1部_ indd

パワポカバー入稿用.indd

これでわかるAccess2010

Taro-リストⅢ(公開版).jtd

PowerPoint Presentation

Java演習(4) -- 変数と型 --

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

: : : TSTank 2

ex01.dvi

1-4 int a; std::cin >> a; std::cout << "a = " << a << std::endl; C++( 1-4 ) stdio.h iostream iostream.h C++ include.h 1-4 scanf() std::cin >>


四校_目次~巻頭言.indd

生活設計レジメ

44 4 I (1) ( ) (10 15 ) ( 17 ) ( 3 1 ) (2)

Transcription:

21 B92 B92 Quantum cryptography simulator 1100348 2010 3 1

B92 BB84 BB84 E91 B92 2 3 B92 4 3 5 B92, i

Abstract B92 Quantum cryptography simulator Soichiro MATSUMOTO English Nowadays, the public key cryptosystem is widely used to provide security for internet shoppings and bankings. The public key cryptosystem is known to be efficiently deciphered by the Shor s quantum algorithm. A new cryptography has emerged in the shape of the quantum cryptography. In this article, we examine B92 protocol which is one of the quntum cryptography. In chapter 2, we explain the uncertainty principle and superposition principle. In chapter 3, we explain the B92 Quantum cryptography. In chapter 4, we explain the operation of the B92 quantum cryptography simulator. In chapter 5, we examin the statistical properties of B92 protocols. key words Quantum cryptography, Electron, Secret key, Uncertainty principle, Superposition principle, Wiretapping, Observation, Inner product, Noise ii

1 1 1.1................................. 1 1.2....................... 1 2 3 2.1................................. 3.......................... 3 2.2................................ 4 3 B92 5 3.1 B92.................... 5 3.2.............................. 6 3.2.1................................. 6 3.2.2................................. 6............................. 7 3.3.............................. 8 3.3.1................................. 8 3.3.2................................. 8 3.3.3................................. 9............................. 10 4 12 4.1 - -.............................. 13 4.2 - -.............................. 13 4.2.1............................... 14 iii

4.2.2 BB84............................ 15 4.2.3 B92...................... 15 4.2.4 B92...................... 15 4.2.5.......................... 16 4.3 ( ).................................. 16 4.4 - -............................ 17 5 20 5.1........................ 20 5.2............................ 21............................. 22 5.2.1.......................... 22............................... 23............................... 23................................. 23 5.2.2.......................... 24............................... 24............................... 25................................. 25 6 26 6.1................................... 26 6.2...................................... 26 6.2.1................. 26 6.2.2............... 26 6.2.3............. 27 6.3...................................... 27 iv

28 29 A B92 30 B 45 C 49 v

4.1 B92................................... 12 4.2............................. 13 4.3............................ 14 4.4............................. 18 5.1 - -........................... 20 5.2 - (B92Alice)-.................... 21 5.3 - (B92Bob)-..................... 21 5.4 - (BB84)-...................... 22 5.5 - (Key,Mode )-................. 22 C.1 - -......................... 49 C.2 - -......................... 49 C.3 - -......................... 50 C.4 - -......................... 50 C.5 - -.................... 50 C.6 - -.................... 50 vi

3.1 B92............................. 5 3.2................................. 6 3.3................................. 7 3.4................................... 7 3.5................................. 8 3.6 B92 ( )............. 9 3.7 B92 ( ).................... 10 3.8 B92 ( )............. 10 3.9................................. 10 3.10................................... 11 4.1 B92............................. 12 5.1 (1) - -............. 23 5.2 (2) - -............. 24 5.3 (3) - -............. 24 5.4 (4) - -............. 25 vii

1 1.1 NP NP 2 1.2 3 1

1.2 2

2 2.1 2 2 [2.1.0.1] 3

2.2 x p h (2.1.0.1) x p x p h x p p x h 2.2 2 2 Ψ Ψ = α ψ a + β ψ b (2.2.0.2) α 2 + β 2 = 1 (2.2.0.3) ψ a ψ b Ψ 4

3 B92 3.1 B92 2 1 BB84 B92 (A;ice), (Eve), (Bob) 0, 1 (0), (1) 3.1 B92 5

3.2 3.2 3.2.1 0 1 ( 2 ) 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 3.2 3.2.2 1. 2. (1(0),0(1) ) 3. 6

3.2 1 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 3.3 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 3.4 7

3.3 3.3 3.3.1 0 1 ( 2 ) 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 3.5 3.3.2 ( ) 8

3.3 ( ) BB84 B92 B92 2 B92 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 3.6 B92 ( ) 3.3.3 9

3.3 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 3.7 B92 ( ) 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 3.8 B92 ( ) 1. 2. (1(0),0(1) ) 3. 1 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 3.9 10

3.3 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 3.10 11

4 B92 key mode key(mode),, 0, 1 (0), (1) 4.1 B92 4.1 B92 12

4.1 - - 4.1 - - 0 0.999999 0.5 (X 0.5 0.5 X) 0.5 0 1 ( 4.2) 2 ( 4.3) ( 2 ) 4.2 4.2 - - 13

4.2 - - 4.3 BB84 B92 B92 4.2.1 14

4.2 - - 4.2.2 BB84 0 0.999999 0.5 (X 0.5 0.5 X) 0.5 0 1 2 4.2.3 B92 0 0.999999 0.5 (X 0.5 0.5 X) 0.5 0 1 1 4.2.4 B92 0 0.999999 0.5 (X 0.5 0.5 X) 0.5 0 1 1 15

4.3 ( ) 4.2.5 1 4.3 ( ) x = (Aj[0] Ej[0]) + (Aj[1] Ej[1]) 2 (4.3.0.1) 4.3 3 x = 0 0 x = 1 1 x=0.5 0.5 (0 1 1 0 ) x = 0 100 x = 1 16

4.4 - - x=0.5 50 4.3 4.4 - - 0 0.999999 0.5 (X 0.5 0.5 X) 0.5 0 1 1 ( 4.4) x = (Aj[0] Bj[0]) + (Aj[1] Bj[1]) 2 (4.4.0.2) 17

4.4 - - 4.4 x = (Ej[0] Bj[0]) + (Ej[1] Bj[1]) 2 (4.4.0.3) 3 x = 0 0 x = 1 1 x=0.5 0.5 x = 0 100 x = 1 x=0.5 50 18

4.4 - - 19

5 5.1 *** *** No,1:B92- No,2:B92- (B92Alice ) 0(0),1(1) No,3:B92- (B92Bob ) 0(1),1(0) No,4:B92- (BB84) Key(Mode) No,5:B92- (Key,Mode ) Please enter number:no,1 ****************** No,1 ******************** 5000000 key mode (1250150/5000000)25.003000 key (1250150/5000000)25.003000 100 (1250150/1250150)5000000 100.000000 No,1 end:1 retry:0 5.1 - - B92 0 0.5 1 50 25 100 [ 5.1] 12.5 12.5 37.5 37.5 25 20

5.2 *** *** No,1:B92- No,2:B92- (B92Alice ) 0(0),1(1) No,3:B92- (B92Bob ) 0(1),1(0) No,4:B92- (BB84) Key(Mode) No,5:B92- (Key,Mode ) Please enter number:no,2 ****************** No,2 ******************** :5000000 key mode (1874907/5000000)37.498138 key (1250178/5000000)25.003559 100 (1250178/1874907)5000000 66.679466 No,2 end:1 retry:0 5.2 - (B92Alice)- *** *** No,1:B92- No,2:B92- (B92Alice ) 0(0),1(1) No,3:B92- (B92Bob ) 0(1),1(0) No,4:B92- (BB84) Key(Mode) No,5:B92- (Key,Mode ) Please enter number:no,3 ****************** No,3 ******************** :5000000 key mode (1876738/5000000)37.534760 key (1252139/5000000)25.042780 100 (1252139/1876738)5000000 66.718903 No,3 end:1 retry:0 5.3 - (B92Bob)- 3 B92 5.2 B92 0 100 21

5.2 *** *** No,1:B92- No,2:B92- (B92Alice ) 0(0),1(1) No,3:B92- (B92Bob ) 0(1),1(0) No,4:B92- (BB84) Key(Mode) No,5:B92- (Key,Mode ) Please enter number:no,4 ****************** No,4 ******************** :500000 key mode (187087/500000)37.417400 key (124795/500000)24.959000 100 (124795/187087)500000 66.704262 No,4 end:1 retry:0 5.4 - (BB84)- *** *** No,1:B92- No,2:B92- (B92Alice ) 0(0),1(1) No,3:B92- (B92Bob ) 0(1),1(0) No,4:B92- (BB84) Key(Mode) No,5:B92- (Key,Mode ) Please enter number:no,5 ****************** No,5 ******************** :5000000 Eve Key:1 Eve Mode:0 key mode (1874055/5000000)37.481098 key (1247612/5000000)24.952240 100 (1247612/1874055)5000000 66.572861 No,5 end:1 retry:0 5.5 - (Key,Mode )- 5.2.1 22

5.2 1 0.5 0.25 / 0 25 25 100 10 31 27.80 90 20 34.90 30.00 86 30 39.90 32 79 40 44.30 35.10 79 50 49.60 38 76 5.1 (1) - - 1 0.25 0.14 2:1 50 23

5.2 / 0 37.5 25 66.67 10 40.35 26.66 66.07 20 42.71 27.41 64.18 30 43.83 27.97 63.81 40 47.93 29.89 62.36 50 49.89 31.99 64.12 5.2 (2) - - 5.2.2 25 50 50 25 1 0.5 0.5 25 / 0 25 25 100 10 30 25 83.20 20 35.30 25 73.10 30 40.20 25 62.30 40 44.90 25 56.40 50 49.70 25 50.30 5.3 (3) - - 24

5.2 25 12.5 37.5 50 50 1 0.25 1 0.25 25 / 0 37.5 25 66.67 10 40.33 25.56 64.07 20 41.51 24.31 58.22 30 45.35 25.10 55.12 40 47.63 25 52.43 50 49.80 25 50.20 5.4 (4) - - 25 2.5 40 25

6 6.1 C B92 3 B92 6.2 6.2.1 7 6.2.2 4 BB84 B92 B92 12.5 7 26

6.3 6.2.3 25 2.5 40 B92 6.3 2:1 Weak measurement theory 27

28

[1] N.Davia Mermin, -Quantum Computer Sience An Introduction-,, 2009. [2], - -, BP, 2007. [3] D.Bouwmeester, A.Ekert, A.Zeilinger,,,,,,, 2007. [4],, pp.1-5 [5], Heisenberg s Quantum Mechanics (Japanese), http://www.kutl.kyushu-u.ac.jp/. 29

A B92 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> int c11=0, c12=0, c21=0, c22=0, c31=0, haki1=0,haki2=0, f=0, ct=0; int yomikomike,yomikomime,kurikaesi=0; double t1,t2; int flip(float x, int y,float n){ int i, i2; int kakuritu; if(x == 0){ kakuritu = 1 - y; else if(x > 0.9){ kakuritu = y; else{ if(n<0.5){ kakuritu = y; else{ kakuritu = 1 - y; return kakuritu; int flip2(float x, int y,float n){ int i, i2; int kakuritu; if(x == 0){ kakuritu = 1 - y; else if(x > 0.9){ kakuritu = y; else{ if(n<0.5){ kakuritu = y; else{ kakuritu = 1-y; f=1; return kakuritu; int flip3(float x,int y,float n){ int kakuritu; float furippuritu = x; float randamusuu = n; if(randamusuu < furippuritu){ 30

y=1-y; printf("flip"); return y; void main(){ /*do{*/ int i, i2, z, zz,c=0,kaisu; float n; double sqrt(double x); /*int Max = 1000;*/ int k,m,j,rkb,mb,jb, rke, me, je, Hi, r, swich, rd,cf=0,exit=0; float cal1, cal2, cal3, cal4, modp, keyp, hyakup; static int flag = 0; static int flag2 = 0; /* */ int keya[10], keyb[10], keye[10], suisokukey[10]; int modea[10], modeb[10], modee[10]; float Aj[10][2], Bj[10][2], Ej[10][2], keisan[10]; float keisan2[10], kakuritu[10], kakuritu2[10]; int jyoutaia[10], jyoutaib[10], jyoutaie[10]; /* */ /* */ int keya2, keyb2, keye2, suisokukey2; int modea2, modeb2, modee2; float Aj2[2], Bj2[2], Ej2[2], keisan3, keisan4, kakuritu3, kakuritu4; int jyoutaia2, jyoutaib2, jyoutaie2; /* */ /* */ float rf; /* */ clock t s,e; printf("copyright (C) 2010 Soichiro.M All Rights Reserved."); printf("*** ***\nno,1:b92- \nno,2:b92- (B92Alice ) 0(0),1(1)\nNo,3:B92- (B92Bob ) 0(1),1(0)\nNo,4:B92- (BB84) Key(Mode) \nno,5:b92- (Key,Mode )\nplease enter number:no,"); scanf(" d",&swich); switch (swich) { case 1: do{ printf("****************** No,1 ********************\n"); printf(" "); scanf(" d",&kaisu); s = clock(); do{ if (flag == 0) { srand((unsigned)time(null)); flag = 1; for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keya2 = modea2 = 0; else if(n >= 0.5){ 31

keya2 = modea2 = 1; k = keya2; m = modea2; j=k*10+m; if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keyb2 = 0; modeb2 = 1; else if(n >= 0.5){ keyb2 = 1; modeb2 =0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); Bj2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Bj2[0])+(Aj2[1]*Bj2[1]); kakuritu3 = keisan3 * keisan3; if(kakuritu3>0.9){ c12=c12+1; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip2(kakuritu3,keyb2,n); 32

keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; c=c+1; while(c<kaisu); cal1 = c; cal2 = c21; cal3 = c22; modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; e = clock(); printf("key mode (%d/%d)%f \nkey (%d/%d)%f \n100 (%d/%d)%d %f \n",c21,c,modp, c22, c, keyp, c22, c21, c, hyakup); printf("%.2f \n",(double)(e-s)/clocks PER SEC); printf("no,1 end:1 retry:0"); scanf(" d",&z); c21=c22=c=0; haki1=haki2=0; printf("\n"); f=0; while(z == 0); break; case 2: do{ printf("****************** No,2 ********************\n"); printf(" :"); scanf(" d",&kaisu); do{ if (flag == 0) { srand((unsigned)time(null)); flag = 1; for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keya2 = modea2 = 0; else if(n >= 0.5){ keya2 = modea2 = 1; for(i=0;i<10;i++){ k = keya2; m = modea2; j=k*10+m; jyoutaia2 = j; 33

j = jyoutaia2; if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keye2 = 0; modee2 = 0; else if(n >= 0.5){ keye2 = 1; modee2 = 1; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Ej2[0])+(Aj2[1]*Ej2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keye2,n); keye2=zz; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; 34

Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keyb2 = 0; modeb2 = 1; else if(n >= 0.5){ keyb2 = 1; modeb2 = 0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb=0; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); Bj2[1] = -1/sqrt(2); keisan3 = (Ej2[0]*Bj2[0])+(Ej2[1]*Bj2[1]); kakuritu4 = keisan3*keisan3; /*printf(" %d:[%f] %f\n",i+1,keisan2[i],kakuritu2[i]);*/ for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keyb2,n); keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; 35

c=c+1; while(c<kaisu); cal1 = c; cal2 = c21; cal3 = c22; modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; printf("key mode (%d/ d)%f \nkey (%d/%d)%f \n100 (%d/%d)%d %f \n",c21,c,modp, c22, c, keyp, c22, c21, c, hyakup); printf("no,2 end:1 retry:0"); scanf("%d",&z); c21=c22=c=0; haki1=haki2=0; printf("\n"); f=0; while(z == 0); break; case 3: do{ printf("****************** No,3 ********************\n"); printf(" :"); scanf("%d",&kaisu); do{ if (flag == 0) { srand((unsigned)time(null)); flag = 1; for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; /*printf("making random number[%d]: %f \n", i2, n);*/ if(n < 0.5){ keya2 = modea2 = 0; else if(n >= 0.5){ keya2 = modea2 = 1; for(i=0;i<10;i++){ k = keya2; m = modea2; j=k*10+m; jyoutaia2 = j; j = jyoutaia2; if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; 36

Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keye2 = 0; modee2 = 1; else if(n >= 0.5){ keye2 = 1; modee2 = 0; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Ej2[0])+(Aj2[1]*Ej2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keye2,n); keye2=zz; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); 37

Ej2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keyb2 = 0; modeb2 = 1; else if(n >= 0.5){ keyb2 = 1; modeb2 = 0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb=0; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); Bj2[1] = -1/sqrt(2); keisan3 = (Ej2[0]*Bj2[0])+(Ej2[1]*Bj2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keyb2,n); keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; c=c+1; while(c<kaisu); cal1 = c; cal2 = c21; cal3 = c22; modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; 38

printf("key mode (%d/%d)%f \nkey (%d/%d)%f \n100 (%d/%d)%d %f \n",c21,c,modp, c22, c, keyp, c22, c21, c, hyakup); printf("no,3 end:1 retry:0"); scanf("%d",&z); c21=c22=c=0; haki1=haki2=0; printf("\n"); f=0; while(z == 0); break; case 4: do{ printf("****************** No,4 ********************\n"); printf(" :"); scanf("%d",&kaisu); do{ if (flag == 0) { srand((unsigned)time(null)); flag = 1; for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keya2 = modea2 = 0; else if(n >= 0.5){ keya2 = modea2 = 1; for(i=0;i<10;i++){ k = keya2; m = modea2; j=k*10+m; jyoutaia2 = j; j = jyoutaia2; if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keye2 = 0; else if(n >= 0.5){ keye2 = 1; 39

for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ modee2 = 0; else if(n >= 0.5){ modee2 = 1; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Ej2[0])+(Aj2[1]*Ej2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keye2,n); keye2=zz; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ 40

keyb2 = 0; modeb2 = 1; else if(n >= 0.5){ keyb2 = 1; modeb2 = 0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb=0; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); Bj2[1] = -1/sqrt(2); keisan3 = (Ej2[0]*Bj2[0])+(Ej2[1]*Bj2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keyb2,n); keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; c=c+1; while(c<kaisu); cal1 = c; cal2 = c21; cal3 = c22; modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; printf("key mode (%d/%d)%f \nkey (%d/%d)%f \n100 (%d/%d)%d %f \n",c21,c,modp, c22, c, keyp, c22, c21, c, hyakup); printf("no,4 end:1 retry:0"); scanf("%d",&z); c21=c22=c=0; 41

haki1=haki2=0; printf("\n"); f=0; while(z == 0); break; case 5: do{ printf("****************** No,5 ********************\n"); printf(" :"); scanf("%d",&kaisu); printf("eve Key:"); scanf("%d",&yomikomike); printf("eve Mode:"); scanf("%d",&yomikomime); do{ keye2=yomikomike; modee2=yomikomime; if (flag == 0) { srand((unsigned)time(null)); flag = 1; for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keya2 = modea2 = 0; else if(n >= 0.5){ keya2 = modea2 = 1; for(i=0;i<10;i++){ k = keya2; m = modea2; j=k*10+m; jyoutaia2 = j; j = jyoutaia2; if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ 42

Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Ej2[0])+(Aj2[1]*Ej2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keye2,n); keye2=zz; rke = keye2; me = modee2; je=rke*10+me; jyoutaie2 = je; je = jyoutaie2; if(je==0){ Ej2[0] = 1; Ej2[1] = 0; else if(je==1){ Ej2[0] = 1/sqrt(2); Ej2[1] = 1/sqrt(2); else if(je==10){ Ej2[0] = 0; Ej2[1] = 1; else{ Ej2[0] = 1/sqrt(2); Ej2[1] = -1/sqrt(2); for(i2=0;i2<5;i2++){ n = (float)rand() / 32768.0; if(n < 0.5){ keyb2 = 0; modeb2 = 1; else if(n >= 0.5){ keyb2 = 1; modeb2 = 0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb=0; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; 43

else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); Bj2[1] = -1/sqrt(2); keisan3 = (Ej2[0]*Bj2[0])+(Ej2[1]*Bj2[1]); kakuritu4 = keisan3*keisan3; for(i2=0;i2<10;i2++){ n = (float)rand() / 32768.0; zz = flip(kakuritu4,keyb2,n); keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; c=c+1; while(c<kaisu); cal1 = c; cal2 = c21; cal3 = c22; modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; printf("key mode (%d/%d)%f \nkey (%d/%d)%f \n100 (%d/%d)%d %f \n",c21,c,modp, c22, c, keyp, c22, c21, c, hyakup); printf("no,5 end:1 retry:0"); scanf("%d",&z); c21=c22=c=0; haki1=haki2=0; printf("\n"); f=0; while(z == 0); break; /*exit=0; printf("exit OK? y1 n0:"); scanf("%d",&exit); break; while(exit == 0);*/ 44

B #include stdio.h #include stdlib.h #include math.h #include time.h int c11=0, c12=0, c21=0, c22=0, c31=0, haki1=0,haki2=0, f=0, ct=0; int yomikomike,yomikomime,kurikaesi=0; int flip(float x, int y,float n){ int i, i2; int kakuritu; if(x == 0){ kakuritu = 1 - y; else if(x 0.9){ kakuritu = y; else{ if(n 0.5){ kakuritu = y; else{ kakuritu = 1 - y; return kakuritu; int flip2(float x, int y,float n){ int i, i2; int kakuritu; if(x == 0) kakuritu = 1 - y; else if(x 0.9){ kakuritu = y; else{ if(n 0.5){ kakuritu = y; else{ kakuritu = 1-y; f=1; return kakuritu; 45

int flip3(float x,int y,float n){ if(n x){ y=1-y; /*printf( flip );*/ return y; void main(){ /*do{*/ int i, i2, z, zz,c=0,kaisu,basyo; float n; double sqrt(double x); /*int Max = 1000;*/ int k,m,j,rkb,mb,jb, rke, me, je, Hi, r, swich, rd,cf=0,exit=0; float cal1, cal2, cal3, cal4, modp, keyp, hyakup; static int flag = 0; static int flag2 = 0; int keya[10], keyb[10], keye[10], suisokukey[10]; int modea[10], modeb[10], modee[10]; float Aj[10][2], Bj[10][2], Ej[10][2], keisan[10], keisan2[10], kakuritu[10], kakuritu2[10]; int jyoutaia[10], jyoutaib[10], jyoutaie[10]; int keya2, keyb2, keye2, suisokukey2; int modea2, modeb2, modee2; float Aj2[2], Bj2[2], Ej2[2], keisan3, keisan4, kakuritu3, kakuritu4; int jyoutaia2, jyoutaib2, jyoutaie2; float rf; printf( Copyright (C) 2010 Soichiro.M All Rights Reserved. ); do{ printf( ***** - - ***** ); printf( ( 0, 1, 2) ); scanf( %d,&basyo); printf( ); scanf( %d,&kaisu); printf( ); scanf( %f,&rf); do{ if (flag == 0){ srand((unsigned)time(null)); flag = 1; /*n2 = (float)rand() / 32768.0;*/ for(i2=0;i2 5;i2++){ n = (float)rand() / 32768.0; /*printf( Making random number[%d]: %f Yn, i2, n);*/ if(n 0.5){ keya2 = modea2 = 0; else if(n = 0.5){ keya2 = modea2 = 1; 46

if(basyo == 1) /*printf( %f,n); printf( %d,zz);*/ zz=flip3(rf, keya2, n); /*printf( %dyn,zz);*/ keya2=zz; k = keya2; m = modea2; j=k*10+m; /*jyoutaia = j;*/ if(j==0){ Aj2[0] = 1; Aj2[1] = 0; else if(j==1){ Aj2[0] = 1/sqrt(2); Aj2[1] = 1/sqrt(2); else if(j==10){ Aj2[0] = 0; Aj2[1] = 1; else{ Aj2[0] = 1/sqrt(2); Aj2[1] = -1/sqrt(2); for(i2=0;i2 5;i2++){ n = (float)rand() / 32768.0; if(n 0.5){ keyb2 = 0; modeb2 = 1; else if(n = 0.5){ keyb2 = 1; modeb2 =0; rkb = keyb2; mb = modeb2; jb=rkb*10+mb; jyoutaib2 = jb; jb = jyoutaib2; if(jb==0){ Bj2[0] = 1; Bj2[1] = 0; else if(jb==1){ Bj2[0] = 1/sqrt(2); Bj2[1] = 1/sqrt(2); else if(jb==10){ Bj2[0] = 0; Bj2[1] = 1; else{ Bj2[0] = 1/sqrt(2); 47

Bj2[1] = -1/sqrt(2); keisan3 = (Aj2[0]*Bj2[0])+(Aj2[1]*Bj2[1]); kakuritu3 = keisan3 * keisan3; if(kakuritu3 0.9){ c12=c12+1; for(i2=0;i2 10;i2++){ n = (float)rand() / 32768.0; zz = flip2(kakuritu3,keyb2,n); keyb2=zz; for(i2=0;i2 5;i2++){ n = (float)rand() / 32768.0; if(basyo == 2){ zz=flip3(rf, keyb2, n); keyb2=zz; if(modeb2!= keyb2){ c21++; if(modeb2!= keyb2 && keya2 == keyb2){ c22++; if(f==1)cf++; c=c+1; while(c kaisu); /*cal1 = c; cal2 = c21; cal3 = c22;*/ modp = ((float)c21/(float)c)*100; keyp = ((float)c22/(float)c)*100; /*hyakup = ((float)c22/(float)c21)*100;*/ if(modp!=0){ hyakup = ((float)c22/(float)c21)*100; else{ hyakup =0; printf( key mode (%d/%d)%f Ynkey (%d/%d)%f Yn100 (%d/%d)%d %f Yn,c21,c,modP, c22, c, keyp, c22, c21, c, hyakup); printf( No,6 end:1 retry:0 ); scanf( %d,&z); c21=c22=c=0; haki1=haki2=0; printf( Yn ); f=0; while(z == 0); 48

C C.1 C.2 - - - - 49

C.3 C.4 - - - - C.5 - - C.6 - - 50