【网络安全基础】4对称加解密实现二

本文介绍了RC4加解密的基础知识,包括原理概述和在Eclipse中的实现。通过实验,使用教材伪代码和Cipher类分别实现RC4加密,并对比了两种方法的结果。同时,RC4算法被应用到文件的加解密操作,详细描述了如何将原始信息加密存储及解密过程。
摘要由CSDN通过智能技术生成

实验项目名称:对称加解密实现二

1、实验要求
(1)总结RC4加解密原理,利用教材提供的伪代码实现RC4加解密;
(2)利用Cipher类实现RC4加解密,和(1)比较结果是否一致;
(3)利用实现的RC4对文件存储的信息实现加解密,把原始信息存在文件a.txt中,密文存在b.txt中,解密信息存在c.txt中。

2、实现方法
在Eclipse中实现上述要求。

3、实验过程及结果
(1)加密原理:
实验代码如下:

package prj1;
public class RC4 {
   
	public static void main(String[] args) {
   
	    RC4 rc4 = new RC4();
	    String plaintext = "helloworld";
	    String key = "key";
	    String ciphertext = rc4.encrypt(plaintext, key);
	    String decryptText = rc4.encrypt(ciphertext, key); 
	    System.out.print(
	            "明文为:" + plaintext + "\n" + "密钥为:" + key + "\n\n" + "密文为:" + ciphertext + "\n" + "解密为:" + decryptText);
	}
	// 1 加密
	public String encrypt(final String plaintext, final String key) {
   
	    Integer[] S = new Integer[256]; // S盒
	    Character[] keySchedul = new Character[plaintext
要求:<br>1. 随机搜索大素数,随机生成公钥和私钥。<br>2. 用公钥对任意长度的明文(字符)加密。<br>3. 用私钥对密文解密。<br>4. 界面简洁、友好便于操作。<br>环境:<br>1. 硬件环境:PC机一台<br>2. 软件环境:Windos 2000/XP, VC++6.0<br>RSA算法原理:<br>1. 首先,找出两个大素数key_P,key_Q,令key_N = key_P * key_Q。根据欧拉(Euler)数(key_N)的定义为小于key_N且与key_N互素的正整数个数,如果key_P和key_Q的最大公约数GCD(key_P,key_Q)=1,则(key_N)=(key_P) *(key_Q),特别地,如果若key_P != key_Q且都是素数,则(key_N)=(key_P-1)*(key_Q-1)。这时,我们令key_Z = (key_N) = (key_P-1)*(key_Q-1)。并且,key_N公开,key_Z要保密。<br>2. 然后,选择一个与key_Z互素的整数key_D,作为解密密钥。Key_D公开。<br>3. 解同余方程key_E * key_D mod key_Z = 1。得到的key_E就是加密密钥。Key_E需要保密。<br>这个时候key_E一定存在。因为key_D和key_Z互素,根据欧几里德算法,GCD(key_D,key_Z) = 1,而扩展欧几里德算法key_D存在模key_Z乘法逆元的充分必要条件是GCD(key_D,key_Z) = 1。至于key_E怎么得到,用辗转相除法即可得到,下面还会就模key_Z的扩展欧几里德算法予以祥述。<br>4. 接着做加密和解密信息处理。发送端将要发送信息为key_P,通过key_C = key_P^key_E mod key_N 进行处理,然后将密文key_C 发到接受端。这时即使中途有人窃取信息,也只能得到密文,而且,窃取者很难通过公钥(key_N,key_E)对密文进行解密。这时接受端接受到密文。并通过密钥(key_N,key_D)进行解密处理:key_P = key_C^key_D mod key_N。<br><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值