用 java编 程 实 现 RSA加 密 算 法 RSA 加密算法是目前应用最广泛的公钥加密算法,特别适用于通过 Internet 传送的数据,常用于数字签名和密钥交换
那么我今天就给大家介绍一下如何利用 Java 编程来实现 RSA加密算法
一 、RSA加 密 算 法 描述 RSA 加密算法是1978年提出的
经过多年的分析和研究,在众多的公开密钥加密算法中,RSA 加密算法最受推崇,它也被推荐为公开密钥数据加密标准
由数论知识可知,若将一个具有大素数因子的合数进行分解是很困难的,或者说这个问题的计算量是令人望而生畏的,而 RSA 加密算法正是建立在这个基础上的
在 RSA 加密算法中,—个用户 A 可根据以下步骤来选择密钥和进行密码转换: (1)随机的选取两个不同的大素数 p 和 q(一般为100位以上的十进制数),予以保密; (2)计算 n=p*q,作为用户 A 的模数,予以公开; (3)计算欧拉(Euler)函数 z=(p-1)*(q-1),予以保密; (4)随机的选取 d 与 z 互质,作为 A 的公开密钥; (5)利用 Euclid 算法计算满足同余方程 e*d≡1modz的解 d,作为用户 A 的保密密钥; (6)任何向用户 A 发送信息 M 的用户,可以用 A 的公开模数 D 和公开密钥 e 根据 C=Me mod n 得到密文 C; RSA 加密算法的安全性是基于大素数分解的困难性
攻击者可以分解已知的 n,得到 p 和 q,然后可得到 z;最后用 Euclid 算法,由 e 和 z 得到 d
然而要分解200位的数,需要大约40亿年
二 、用 Java语言描述 RSA加密算法的原理 假设我们需要将信息从机器 A 传到机器 B,首先由机器 B 随机确定一个 private_kcy(我们称之为密钥),可将这个 private_key 始终保存在机器