信息安全技术实验4
RSA
单向陷门函数与公钥密码
- 单向陷门函数:
- 给定$x$,计算$y=f(x)$是容易的;
- 给定$y$, 计算$x$使$x=f-1(y)$是不可行的;
- 存在陷门$t$,已知$t$时,对给定的任何$y$,若相应的原象$x$存在,则计算$x$是容易的。
- 加密:使用函数$f(x)$作为公钥,陷门$t$作为私钥。加密明文$m$得到密文$y=f(m)$。仅有知道私钥时可求出原文。
欧拉函数
- 在$[1,n]$中,不大于$n$,且与其互素的正整数的个数,记为$\phi(x)$
- $p$为素数时, $\phi(pk)=p{k-1}(p-1)$
- 若$(m_1, m_2)=1$,则$\phi(m_1 m_2)=\phi(m_1) \phi(m_2)$
- 若自变量为普通数字,则可改写为素数幂的乘积的形式。之后由3.中公式分解。
RSA步骤
- 随机生成两个不同大素数$p$, $q$;
- 计算$n=pq$, $\phi(n)=(p-1)(q-1)$;
- 随机选取整数$e$, $1<e<\phi(n)$,满足$(e,\phi(n))=1$;
- 利用扩展欧基里德算法求出满足$ed=1 mod(\phi(n))$的整数$d$;
- 公开$(n,e)$,保密$(p,q,\phi(n),d)$。其中$e$就是加密密钥,而$d$就是解密密钥,$n$称为模数;
- 加密:$c=m^e \ mod \ n$ (若明文长度超过$n$,则分组)
- 解密:$m=c^d \ mod \ n$
使用mpir实现短数据加解密
1 | //随机生成一个1024素数 |