00. FirstRSA 暗号で学ぶ初めての CommonLisp    # 素因数分解(試行除算)        2012-05-12
01. Profile  Akiko Terada (@pgf2)Work : software developer
02. Attention!!すべてはフィーリングで!!
03. Index●RSA 暗号● 試行除算による素因数分解● 参考
04. RSA複合鍵 : p, q暗号鍵 : n = p*q1. 異なる素数 p, q を選ぶ2. メッセージ(平文)を n で暗号化する3. メッセージ(暗号文)を p, q で複合化する安全性は効率的に ・与えられた整数 n を素因数分化す...
05. Trial division - algorithmInput: 正の整数 nOutput: 素因数Step1: op = 2Step2: n ≡ 0 (mod op)    → true: op は n の素因数 End    → f...
05. Trial division - program(defun prime-factor(n) (cond ((= n 1) (list nil 1))       (t         (labels ((pf (&optional (...
05. Trial division - efficiency      素因数分解したい整数 n が小さい素数で割り切れるときのみ効率的となる!                → フェルマーの素因数分解へ続く    整数 n が√ n より余...
06. ReferenceISBN-13: 978-4627847613ISBN-13: 978-4431709442ISBN-13: 978-4621062869
07. Lastご清聴ありがとうございました!
Upcoming SlideShare
Loading in …5
×

RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)

4,597 views

Published on

Kyoto.lisp Tech Talk #1
p.5 :%s/素因数分化/素因数分解/g

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,597
On SlideShare
0
From Embeds
0
Number of Embeds
2,624
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)

  1. 1. 00. FirstRSA 暗号で学ぶ初めての CommonLisp # 素因数分解(試行除算) 2012-05-12
  2. 2. 01. Profile Akiko Terada (@pgf2)Work : software developer
  3. 3. 02. Attention!!すべてはフィーリングで!!
  4. 4. 03. Index●RSA 暗号● 試行除算による素因数分解● 参考
  5. 5. 04. RSA複合鍵 : p, q暗号鍵 : n = p*q1. 異なる素数 p, q を選ぶ2. メッセージ(平文)を n で暗号化する3. メッセージ(暗号文)を p, q で複合化する安全性は効率的に ・与えられた整数 n を素因数分化する方法 ・ある整数が素数であることを証明する方法に依存する
  6. 6. 05. Trial division - algorithmInput: 正の整数 nOutput: 素因数Step1: op = 2Step2: n ≡ 0 (mod op)    → true: op は n の素因数 End    → false: Step3Step3: op++Step4: op >= floor(√n)    → true: n は素数 End    → false: Step2
  7. 7. 05. Trial division - program(defun prime-factor(n) (cond ((= n 1) (list nil 1)) (t (labels ((pf (&optional (op 2)) (cond ((> op (sqrt n)) (list t n)) ((zerop (rem n op)) (list nil op)) (t (pf (+ op 1)))))) (pf)))))(defun trial-division(n) (let ((prime-factors nil)) (cond ((= n 1) (setq prime-factors (list n))) (t (labels ((td (&optional (op n)) (let ((lst (prime-factor op))) (setq prime-factors (cons (car (cdr lst)) prime-factors)) (unless (car lst) (td (/ op (car (cdr lst)))))))) (td)) prime-factors))))
  8. 8. 05. Trial division - efficiency 素因数分解したい整数 n が小さい素数で割り切れるときのみ効率的となる! → フェルマーの素因数分解へ続く 整数 n が√ n より余り大きくない因数を持つときに 効率が良くなるアルゴリズム
  9. 9. 06. ReferenceISBN-13: 978-4627847613ISBN-13: 978-4431709442ISBN-13: 978-4621062869
  10. 10. 07. Lastご清聴ありがとうございました!

×