【Java】字符串的加密算法

字符串的加密算法

使用一个字符串 password 作为密码对另一个字符串 sourceString 进行加密;
EncryptAndDecrypt.java

package stringEncrypt;

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 yuan = c[k] - p[k % n];
            c[k] = (char)yuan;
        }
        return new String(c);
    }
}

StringEncryptTest.java

package stringEncrypt;

import java.util.Scanner;

public class StringEncryptTest {
    public static void main (String args[]) {
        String sourceString = "今晚十点进攻";
        EncryptAndDecrypt person = new EncryptAndDecrypt();
        System.out.println("输入密码加密:" + sourceString);
        Scanner inTo = new Scanner(System.in);
        String password = inTo.nextLine();
        String secret = person.encrypt(sourceString, password);
        System.out.println("密文:" + secret);
        System.out.println("输入解密密码");
        password = inTo.nextLine();
        String source = person.decrypt(secret, password);
        System.out.println("明文:" + source);
    }
}

运行结果:在这里插入图片描述
如果密码正确,解密就正确;

用Scanner解析字符串

用Scanner类从字符串中解析程序所需要的数据;
ScannerParse.java

package ScannerParseString;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ScannerParse {
    public static void main (String args[]) {
        String cost = " TV cost 876 dollar.Computer cost 2398 dollar.telephone cost 1278 dollar";
        Scanner inTo = new Scanner(cost);
        double sum = 0;
        while(inTo.hasNext()) {
            try {
                double price = inTo.nextDouble();
                sum = sum + price;
                System.out.println(price);
            }
            catch(InputMismatchException exp) {
                String t = inTo.next();
            }   //当单词不是数字型单词时,调用nextInt()或nextDouble()产生异常
        }
        System.out.println("总消费:" + sum + "元");
    }
}

运行结果:在这里插入图片描述

发布了77 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/104199789