当前位置:编程学习 > JAVA >>

字符串加密解密问题

package cipher;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class CipherTest {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
         System.out.println("请输入你想要加密的字符串:");
         Scanner sInput=new Scanner(System.in);//从键盘输入字符串
         String str=sInput.next();
         char c[]=str.toCharArray();//将字符串拆分为字符到数组
       //  char[] cStr=new char[str.length()];//创建一个字符串数组
         char[] CString=new char[100]; //缓冲数组
         File fR=new File("F:"+File.separator+"encryptCipher.txt"); //加密文件
         File fW=new File("F:"+File.separator+"afterCipher.txt");//加密后文件
         FileReader fRead=new FileReader(fR);
         FileWriter fWriter=new FileWriter(fW);
         int n= -1;
         while((n = fRead.read(CString)) != -1)  //从文件中读取字符数组并存放到数组CString中
         {
          for(int i=0;i<n;i++)
          {
          CString[i]=(char)(CString[i]^'c');//加密存放到数组CString中
          }
          fWriter.write(CString,0,n);//把读出来的字符写入到加密后的文件中
         }
         fWriter.close();
         fRead=new FileReader(fW);
         System.out.println("加密后的字符是:");
         while((n= fRead.read(CString))!= -1)
         {
          String sc=new String(CString,0,n);//把加密后的字符存放到sc中
          System.out.print(sc);
         }
         fRead=new FileReader(fW);
         System.out.println("解密后的文件内容:"); // 输出字符串
         while((n= fRead.read(CString)) !=-1)
         {
          for(int i=0;i<n;i++)
          {
          CString[i]=(char)(CString[i]^'c');
        
          }
          String sj=new String(CString,0,n);//把解密后的字符存放到sj中
      System.out.print(sj);
         }
         fRead.close();
}
}


运行后的结果没有显示出来:加密跟解密空白的,求解释,哪错了,谢谢啦

请输入你想要加密的字符串:
Sleeply
加密后的字符是:
解密后的文件内容:

--------------------编程问答-------------------- 虽然不知道你要加密的是文件的内容还是你输入的内容。不过你先看这个符不符合你要的?

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class CipherTest {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("请输入你想要加密的字符串:");
Scanner sInput = new Scanner(System.in);// 从键盘输入字符串
String str = sInput.next();
char[] c = str.toCharArray();// 将字符串拆分为字符到数组
// char[] cStr=new char[str.length()];//创建一个字符串数组
char[] CString = new char[100]; // 缓冲数组
File fR = new File("1.txt"); //加密文件
File fW = new File("2.txt");// 加密后文件
FileReader fRead = new FileReader(fR);
FileWriter fWriter = new FileWriter(fW);
int n = -1;

while ((n = fRead.read(CString)) != -1) //从文件中读取字符数组并存放到数组CString中
{
for (int i = 0; i < n; i++) {
CString[i] = (char) (CString[i] ^ c[i%c.length]);//加密存放到数组CString中
}
fWriter.write(CString, 0, n);// 把读出来的字符写入到加密后的文件中
}
fWriter.close();
fRead = new FileReader(fW);
System.out.println("加密后的字符是:");
while ((n = fRead.read(CString)) != -1) {
String sc = new String(CString, 0, n);// 把加密后的字符存放到sc中
System.out.print(sc);
}

fRead = new FileReader(fW);
System.out.println("解密后的文件内容:"); //输出字符串
while ((n = fRead.read(CString)) != -1) {
for (int i = 0; i < n; i++) {
CString[i] = (char) (CString[i] ^ c[i%c.length]);

}
String sj = new String(CString, 0, n);// 把解密后的字符存放到sj中
System.out.print(sj);
}
fRead.close();
}
}
--------------------编程问答-------------------- 还有如果你文件里面什么都没有,当然出现那样的结果。
请输入你想要加密的字符串:
Sleeply
加密后的字符是:
解密后的文件内容: --------------------编程问答-------------------- [Quote=引用 2 楼  的回复:]
谢咯,你这句话提醒了我,我从键盘输入后没有写入加密文件夹中,所以一直没有内容
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,