高精度类实现 Diffie Hellman Algorithm
来源:互联网 发布:自动建站网站源码 编辑:程序博客网 时间:2024/06/05 21:57
信息安全原理
作业2 第2题
高精度类写好了还不行
还要实现一下DH算法
那把表达式和DH算法写一个main()里吧
// name: main.cpp// author: amrzs// date: 2014/03/22#include <string>#include <iostream>#include "bigint.h"using namespace std;Bigint calc(Bigint a, Bigint b, char c){ Bigint result; switch(c){ case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; case '%': result = a % b; break; default: cout << "You input a wrong operator" << endl; break; } return result;}int main(){ cout <<"If you want to calculate an expression then input \"EX 123456789 * 987654321\"" << endl <<"if DH algorithm then input \"DH\" and something as follow" << endl; string sFlag, s1, s2; char ch; while(1){ // don't like for(;;) cin >> sFlag; if("EX" == sFlag){ cin >> s1 >> ch >> s2; Bigint a(s1), b(s2); Bigint result = calc(a, b, ch); cout << "The result of expression is: "; result.printNum(); }else if("DH" == sFlag){ cout << "Please input the shared message g and p" << endl; cin >> s1 >> s2; Bigint g(s1), p(s2); cout << "Please input your secret key a" << endl; cin >> s1; Bigint a(s1), A; A = g.getPow(a, p); cout << "Your public key A is: "; A.printNum(); cout << "You send g, p and A to another person" << endl; cout << "He received your shared message p, g and public key A" << endl; cout << "Please input his secret key b" << endl; cin >> s1; Bigint b(s1), B; B = g.getPow(b, p); cout << "His public key is: "; B.printNum(); cout << "He sends the public key B to you" << endl; cout << "K = B^a mod p and you calculate the K is: " << endl; Bigint K = B.getPow(a, p); K.printNum(); cout << "K = A^b mod p and he calculates the K is: " << endl; K = A.getPow(b, p); K.printNum(); }else{ cout << "Your input is wrong, please try again!" << endl; } cout <<"If you want to calculate an expression then input EX 123456789 * 987654321" << endl <<"if DH algorithm then input DH and something as follow" << endl; } return 0;}
按照维基百科上的小数据试了一下,没有问题
把DH写成函数了,再发一遍好了
// name: main.cpp// author: amrzs// date: 2014/03/22#include <string>#include <iostream>#include "bigint.h"using namespace std;Bigint calc(Bigint a, Bigint b, char c){ Bigint result; switch(c){ case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; case '%': result = a % b; break; default: cout << "You input a wrong operator" << endl; break; } return result;}void DiffieHellman(){ string s1, s2; cout << "Please input the shared message g and p" << endl; cin >> s1 >> s2; Bigint g(s1), p(s2); cout << "Please input your secret key a" << endl; cin >> s1; Bigint a(s1), A; A = g.getPow(a, p); cout << "Your public key A is: " << endl; A.printNum(); cout << "You send g, p and A to another person" << endl; cout << "He received your shared message p, g and public key A" << endl; cout << "Please input his secret key b" << endl; cin >> s1; Bigint b(s1), B; B = g.getPow(b, p); cout << "His public key is: " << endl; B.printNum(); cout << "He sends the public key B to you" << endl; cout << "K = B^a mod p and you calculate the K is: " << endl; Bigint K = B.getPow(a, p); K.printNum(); cout << "K = A^b mod p and he calculates the K is: " << endl; K = A.getPow(b, p); K.printNum();}int main(){ cout <<"If you want to calculate an expression then input \"EX 123456789 * 987654321\"" << endl <<"if DH algorithm then input \"DH\" and something as follow" << endl; string sFlag, s1, s2; char ch; while(1){ // don't like for(;;) cin >> sFlag; if("EX" == sFlag){ cin >> s1 >> ch >> s2; Bigint a(s1), b(s2); Bigint result = calc(a, b, ch); cout << "The result of expression is: "; result.printNum(); }else if("DH" == sFlag){ DiffieHellman(); }else{ cout << "Your input is wrong, please try again!" << endl; } cout <<"If you want to calculate an expression then input EX 123456789 * 987654321" << endl <<"if DH algorithm then input DH and something as follow" << endl; } return 0;}
0 0
- 高精度类实现 Diffie Hellman Algorithm
- Diffie-Hellman
- Diffie-Hellman
- 用java编程实现Diffie-Hellman算法
- Diffie–Hellman
- Diffie-Hellman密钥交换
- Diffie-Hellman算法
- Diffie-Hellman算法
- Diffie-Hellman算法(密钥)
- Diffie-Hellman密钥交换
- 关于 Diffie-Hellman 组
- 著名Diffie-Hellman协议
- Diffie-Hellman 算法描述
- Diffie-Hellman加密算法
- diffie-hellman-group1-sha1
- Diffie-Hellman密钥交换
- diffie-hellman-group1-sha1
- Diffie-Hellman密钥交换
- 不同格式快门式3d原理
- linux下ntp时间服务器配置及客户端注意事项
- JavaEE笔记
- hdu1232 畅通工程
- 让人唏嘘的反差!售出首台Mac店铺将停业
- 高精度类实现 Diffie Hellman Algorithm
- SSH架构整合
- 单链表就地逆置
- [转]浅谈数据库设计技巧(上)、(下)(必须要仔细阅读)
- C++概述
- iOS学习之UIActionSheet的使用
- redhat 配置ip
- 忽热回顾和地
- 探索WebKit内核(二)------ IDL和Bindings