分享

问题:解密分析

 樱花梦_张艺馨 2016-03-02
/*
思考题:加密。
数据时八位整数,先将数据倒序,然后将每位数字加上5,再用和 除以10的余数代替该数字
最后将第一位和最后一位数字交换
将上述步骤反向解析。
1.将数据倒序,获取输入位数
2.将数组倒序排列(第一个跟最后一个除外)
3.如果是大于5的话,就用5加上余数;小于5就用余数减 5
4.将数组倒序排序
5.将解密结果顺序输出
*/
import java.util.Scanner;
class LianXi{
 public static void main(String [] args){
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入小于八位的整数");
  int number = sc.nextInt();
  int[] arr = new int[8];
  int index = 0;
  getJieMiNumber(number,arr,index);
 }
 public static void getJiaMiNumber(int number,int[] arr,int index ){
  //将数据倒序
  while(number > 0){
   arr[index] = number % 10;
   number /=10;
   index++;
  }
  //将每位数字加五,除十,取余
  for(int i=0;i<=index;i++){
   arr[i]+=5;
   arr[i]%=10;
  }
  //将第一位跟最后一位数字交换
  int temp = arr[0];
  arr[0] = arr[index-1];
  arr[index-1] = temp;
  //将加密结果输出
  for(int x=0;x<index;x++){
   System.out.print(arr[x]);
  }
  System.out.println();
 }
 public static void getJieMiNumber(int number,int[] arr,int index){
  //将数据倒序,获取输入位数
  while(number > 0){
   arr[index] = number % 10;
   number /=10;
   index++;
  }
  //将数组倒序排列(第一个跟最后一个除外)
  for(int i=1;i<index/2;i++){
   int temp = arr[index-i-1];
   arr[index-i-1] = arr[i];
   arr[i] = temp;
  }
  
  //如果是大于5的话,余数减去5;小于5就用余数加上 5
  for(int x=0;x<index;x++){
   if(arr[x]> 5){
    arr[x] =  arr[x] - 5;
   }else if(arr[x] < 5){
    arr[x] = arr[x] + 5;
   }else{
    arr[x] = arr[x] ;
   }
  }
//将数组倒序排序  
for(int i=0;i<index/2;i++){
   int temp = arr[index-i-1];
   arr[index-i-1] = arr[i];
   arr[i] = temp;
  }
  //将解密结果输出
  for(int x=0;x<index;x++){
   System.out.print(arr[x]);
  }
  System.out.println();
 }
}  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多