《应用密码学》课程设计RSA加解密的设计与实现

上传人:s9****2 文档编号:470787923 上传时间:2023-09-02 格式:DOC 页数:19 大小:133KB
返回 下载 相关 举报
《应用密码学》课程设计RSA加解密的设计与实现_第1页
第1页 / 共19页
《应用密码学》课程设计RSA加解密的设计与实现_第2页
第2页 / 共19页
《应用密码学》课程设计RSA加解密的设计与实现_第3页
第3页 / 共19页
《应用密码学》课程设计RSA加解密的设计与实现_第4页
第4页 / 共19页
《应用密码学》课程设计RSA加解密的设计与实现_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《《应用密码学》课程设计RSA加解密的设计与实现》由会员分享,可在线阅读,更多相关《《应用密码学》课程设计RSA加解密的设计与实现(19页珍藏版)》请在金锄头文库上搜索。

1、上海电力学院应用密码学课程设计 题目: RSA加解密的设计与实现 院系: 计算机与信息工程学院 专业年级: 信息安全专业 2009252班 学生姓名: 学号: 20093464 指导教师: 温蜜 2011年1月 6日目录一、 设计要求.3二、 开发环境与工具.3三、 设计原理.3四、 系统功能描述与软件模块划分.4五、 设计核心代码.6六、 设计结果及验证.16七、 软件使用说明.17八、 参考资料.18九、 设计体会.18一、设计要求1、随机搜索大素数,随机生成公钥和私钥; 2、用公钥对任意长度的明文加密;3、用私钥对密文解密; 4、界面简洁、交互操作性强。 5、(可选)实现对汉字的加解密,

2、把加密结果存放在文本文档二、开发环境与工具开发环境:win7 64位操作系统开发工具:VC+6.0三、 设计原理(算法工作原理)首先设计一个能存放足够大数的类CBigInt,这个类是把很大的数分解成一个个int类型的数来i存储的。输入你要求的密钥位数,然后用rand()函数生成一个个32位数,拼接成大数,进行素性检测,是素数就返回,就这样就产生了公钥(e,n)和私钥(d,n),然后利用 公式c=me mod n,得到密文,保存得到的密文到文本文档,再用公式m=cd mod n ,得到明文。算法路程图如下:开始输入明文输入需要生成的密钥长度产生随机大数进行拉宾-米勒 素性检测通过?NY 加密 结

3、束解密验证四、系统功能描述与软件模块划分CBigInt类的功能:class CBigInt public: unsigned m_nLength; unsigned long m_ulValueBI_MAXLEN; CBigInt(); CBigInt(); void Mov(unsigned _int64 A); void Mov( CBigInt& A); CBigInt Add( CBigInt& A); /加法CBigInt Sub(CBigInt& A); /减法CBigInt Mul(CBigInt& A); /乘法CBigInt Div(CBigInt& A); /除法CBigI

4、nt Mod( CBigInt& A); /模CBigInt Add(unsigned long A); CBigInt Sub(unsigned long A); CBigInt Mul(unsigned long A); CBigInt Div(unsigned long A); void FromString(char *,int len);int ToString(char *);unsigned long Mod(unsigned long A); int Cmp( CBigInt& A); CBigInt ModExp(CBigInt& A, CBigInt& B);CBigInt

5、 RsaTrans( CBigInt& A, CBigInt& B);int RabinMiller(); CBigInt Euc(CBigInt& A);void GetPrime( unsigned bits);void Put(char *str, unsigned int system) ;void Get(char* str, unsigned int system);friend CBigInt operator +(CBigInt&a,CBigInt&b);friend CBigInt operator -(CBigInt&a,CBigInt&b);friend CBigInt

6、operator *(CBigInt&a,CBigInt&b);friend CBigInt operator /(CBigInt&a,CBigInt&b);friend CBigInt operator %(CBigInt&a,CBigInt&b);CBigInt operator +( unsigned long b);CBigInt operator -( unsigned long b);CBigInt operator *( unsigned long b);CBigInt operator /( unsigned long b);void Mov( CBigInt& A); voi

7、d Mov(unsigned _int64 A)是实现大数复制的功能用法为a.Mov(b),就是把大数b赋给aCBigInt Add( CBigInt& A) 实现大数加法功能,用法为a.Add(b),等介于a+b;CBigInt Sub(CBigInt& A)实现大数减法功能,用法为a.Sub(b),等价于a-b;CBigInt Mul(CBigInt& A)实现大数乘法功能,用法为a.Mul(b),等价于a*b;CBigInt Div(CBigInt& A)实现大数除法功能,用法为a.Div(b),等价于a/b;CBigInt Mod( CBigInt& A)实现大数的模功能,用法为a.M

8、od(b)等价于a%b;void FromString(char *,int len)实现字符型的数转换成大数的功能,用法为a.FromString(m,n),意思是把n位 的字符型m赋给大数a;int ToString(char *)实现把大数转变成字符型输出,用法为a.ToString(m),意思是把大数转换成字符型m;int Cmp( CBigInt& A)实现大数比较,用法为C=a.Cmp(b),如果ab,则c=1,如果a=b则c=0,如果ab=-1;CBigInt ModExp(CBigInt& A, CBigInt& B)实现大数模幂功能,用法为a=bModExp(c,d),等价于

9、a=bc mod d;void GetPrime( unsigned bits)获得大素数的函数,用法为a.GetPrime(n),则a获得一个32*bits位的大素数;void Put(char *str, unsigned int system) 把字符型的转换成10进制或16进制的大数void Get(char* str, unsigned int system)把大数还原成10进制或16进制的字符型变量friend CBigInt operator +(CBigInt&a,CBigInt&b);friend CBigInt operator -(CBigInt&a,CBigInt&b)

10、;friend CBigInt operator *(CBigInt&a,CBigInt&b);friend CBigInt operator /(CBigInt&a,CBigInt&b);friend CBigInt operator %(CBigInt&a,CBigInt&b);这些是实现运算符重载的,方便与用户进行大整数的各种运算;class RSApublic:void GetKey(int len,CBigInt &p,CBigInt &q,CBigInt &n,CBigInt &_n,CBigInt &e,CBigInt&d);CBigInt Rsajiami(char* m,in

11、t len,CBigInt e,CBigInt n);/加密 获得密文 void Rsajiemi(CBigInt miwen,CBigInt d,CBigInt n,char *outs);/解密 获得明文void Encryption(char* m,int len,CBigInt e,CBigInt n,CBigInt &cipher,RSA rsa);加密void Decryption(CBigInt cipher,CBigInt d,CBigInt n,RSA rsa);解密private:CBigInt p,q,n,_n,e,d;/RSA主要数据;GetKey(int len,CB

12、igInt &p,CBigInt &q,CBigInt &n,CBigInt &_n,CBigInt &e,CBigInt&d)是生成len位的密钥以及p,q,n,_n,的函数Rsajiami(char* m,int len,CBigInt e,CBigInt n)是对明文进行加密,得到二进制密文的操作Rsajiemi(CBigInt miwen,CBigInt d,CBigInt n,char *outs)是对密文进行解密,并把明文转换成char类型的数据Encryption(char* m,int len,CBigInt e,CBigInt n,CBigInt &cipher,RSA rsa)对明文进行加密,并显示所得密文以及加密多用时间Decryption(CBigInt cipher,CBigInt d,CBi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号