用 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 始终保存在机器 B 中而不发出来。然后,由这个private_key 计算出 public_key(我们称之为公钥)。这个 public_key 的特性是:几乎不可能通过该 public_key 计算生成它的 priyate_key。接下来通过网络把这个 public_key 传给机器 A,机器 A 收到 public_key 后,利用 public_key 将信息加密,并把加密后的信息通过网络发送到机器 B,最后机器 B 利用已知的 pri.rate_key,就可以解开加密信息。 步骤: (1)首先选择两个大素数 p 和 q,计算 n=p*q;m=(p-1)(q 一1); (2)而后随机选择加密密钥 public_key,要求和 m 互质(比如 public_key=m-1); ( 3 ) 利 用Euclid算...