教材代码完成情况测试P186(课上测试)

本文介绍了一个使用随机生成密钥进行加密和解密的Java程序示例。通过Example8_8类和EncryptAndDecrypt类实现,前者用于生成随机数作为密钥并调用加密解密方法,后者包含加密和解密算法。此示例演示了如何在不手动输入密钥的情况下,利用随机数进行数据加密和解密。

一、任务详情

  • 0 在Ubuntu中用自己的有位学号建一个文件,教材p186 Example8_8
  • 1.修改p186 Example8_8中代码,密钥password不用手动输入,使用Random产生随机数做密钥。
    1. 提交添加的代码和运行结果截图

二、源代码

1.Example8_8类

import java.util.Random;
public class Example8_8 {
    public static void main(String args[]) {
        Random ran = new Random();
        String sourceString = "今晚十点进攻";
        EncryptAndDecrypt person = new EncryptAndDecrypt();
        int i = ran.nextInt(100);
        System.out.println("随机密码加密:"+sourceString);
        String password = String.valueOf(i);
        String secret = person.encrypt(sourceString,password);
        System.out.println("密文:"+secret);
        System.out.println("自动解密");
        password =  String.valueOf(i);
        String source = person.decrypt(secret,password);
        System.out.println("明文:"+source);
    }
}

2.EncryptAndDecrypt类

public class EncryptAndDecrypt {
    String encrypt(String sourceString,String password) { //加密算法
        char [] p= password.toCharArray();
        int n = p.length;
        char [] c = sourceString.toCharArray();
        int m = c.length;
        for(int k=0;k<m;k++){
            int mima=c[k]+p[k%n];       //加密
            c[k]=(char)mima;
        }
        return new String(c);    //返回密文
    }
    String decrypt(String sourceString,String password) { //解密算法
        char [] p= password.toCharArray();
        int n = p.length;
        char [] c = sourceString.toCharArray();
        int m = c.length;
        for(int k=0;k<m;k++){
            int mima=c[k]-p[k%n];       //解密
            c[k]=(char)mima;
        }
        return new String(c);    //返回明文
    }
}

三、运行截图

1268846-20190415143851540-1687825320.jpg

转载于:https://www.cnblogs.com/jxxydwt1999/p/10710437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值