使用方法加密java中的数字

时间:2014-04-21 21:53:02

标签: java encryption methods

我目前正在开发一个项目,我不明白为什么我的第二种方法不起作用。我正在尝试将用户输入的数字更改为其他数字。每个数字应加上+7,然后除以10.第一和第三位应该被交换,第二和第四位也是如此。它应该接受四个数字,并分别使用每个数字。我不知道如何得到我教授所要求的结果。他说1234的结果应该是0189,但不管我如何交换它我都会得到13 ...我试图修改方法来分隔数字,然后执行所需的数学运算,但现在结果是14 ... 我也不明白如何让编译器在数字的开头返回零,或者在返回数字时保持它不会在数字的开头丢弃零。 任何帮助将不胜感激,但请不要因为我不理解这项任务而讨厌。

import java.util.*;

public class SeayJ_program2
{
  static Scanner input = new Scanner (System.in);
  public static void main (String [] args)
  {


  int num = getnum(); 

  System.out.println(encrypt(num));

  }
  // methods are here  
  public static int getnum()
  {
  int num;

     System.out.println("Please enter a four digit number");
     num = input.nextInt();

  return num;    
  }


  public static int encrypt(int num)
  {
    int digit1, digit2, digit3, digit4;
    digit4 = num % 10;
    num = num / 10;
    digit4 = (num + 7) / 10;
    digit3 = num % 10;
    num = num / 10;
    digit3 = (num + 7) / 10;
    digit2 = num % 10;
    num = num / 10;
    digit2 = (num + 7) / 10;
    digit1 = num % 10;
    num = num / 10;
    digit1 = (num + 7) / 10;
    return digit3 + digit4 + digit1 + digit2;
  }

  }  

2 个答案:

答案 0 :(得分:1)

这应该适用于获取加密号码。 想想如何处理丢失的零

public static int encrypt(int number){
    int temp = number;
    int digit4 = (temp + 7) % 10;
    temp = temp / 10;
    int digit3 = (temp + 7) % 10;
    temp = temp / 10;
    int digit2 = (temp + 7) % 10;
    temp = temp / 10;
    int digit1 = (temp + 7) % 10;
    return (digit3 * 1000 + digit4 * 100 + digit1 * 10 + digit2);

}

答案 1 :(得分:0)

你可以使用Jasypt,你可以调用掩码并取消屏蔽