陕西理工学院毕业论文(设计)
开始
随机选取两个素数p和q 计算n?p*q 计算欧拉函数?(n)?(p?1)*(q?1) 在2和?(n)之间随机选择一个和?(n)互素的加密密钥e 已知e和欧拉函数?(n),利用ed?1mod?(n),求出解密密钥d 得出:公钥为(n,e),私钥为(n,d) 结束 图3.1产生密钥
(2). 加密
输入待加密的明文m,经过hash变换求出其ASCALL码值,再经过加密算法:c?mmodn,得到密文c。
将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:C= mi^e ( mod n )
第17页 共41页
e 陕西理工学院毕业论文(设计)
开始 打开要加密的明文 成功打 开文件? N Y
N 成功新建
N 明文的数据全部读出了吗? 图3.2 加密流程图
新建一个文件, 用于存密文 文件?Y Y 将明文的扩展名逐字节加密,并将结果写入密文 从明文中一次读入固定长度的字节到缓冲 结束 对缓冲区的数据逐字节加密,并将结果写入密文 关闭明文 Y 关闭密文 (3). 解密
经过解密算法m?cmodn,将密文c回复为原来的明文m。将密文C解密为明文P,计算方法为:P = ci^d ( mod n )
第18页 共41页
d 陕西理工学院毕业论文(设计)
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。
开始 打开要解密的密文 成功打开文件吗? 从密文中读出固定长度的数据到密文缓冲 从密文中读出加密过的明文扩展名 对密文缓冲中的数据解密,结果存入明文缓冲 对密文形式的明文扩展名进行解密,并将解密得到的扩展名与新明文的文件名连接成新明文的全名 将明文缓冲区中的解密结果写入新明文 用新明文的全名创建一个文件 密文中的数据全部读出了吗? 成功创建文件? 关闭新明文
关闭密文
结束
图3.3 解密流程图
第19页 共41页
陕西理工学院毕业论文(设计)
3.5.2 运行过程
具体实现过程如下:
在matlab环境下新建一个.m文件,将程序保存在此文件中,然后由matlab的file菜单下的open命令找到保存的程序,再点击debug菜单下的run命令运行此程序,运行后弹出如图3.4
图3.4 密钥产生
根据提示随意输入两个素数,如:p=11,q=23,按回车键后界面显示如图3.5:
第20页 共41页
陕西理工学院毕业论文(设计)
图3.5 b 明文输入
在界面提示处如入待加密的明文,如:“ xia wu san dian xing dong dai shang AK47” ,按回车后,运行界面如图3.6:
图3.6 密文产
算法程序程序见附录B
第21页 共41页