黑马程序员技术交流社区

标题: java做的一个加密程序 [打印本页]

作者: ToGame    时间: 2015-9-15 17:54
标题: java做的一个加密程序
加密规则:
                首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
                最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
                然后,把加密后的结果在控制台打印出来。

程序思路:
1:输入一个要加密的数字
2:计算出这个数字有多少位数
3:将每位数字倒序放入数组中
4:每位数字都加上5,再用和除以10的余数代替该数字  a=(a+5)%10
5:  将第一位和最后一位数字交换
6:  输出加密后的数字

程序代码:
      主方法:
                 调用加密和解密方法,提示用户输入内容
       public static void main(String[] args)
        {
                while(true)
                {
                        Scanner sc=new Scanner(System.in);
                        System.out.print("请输入您需要加密的内容:");
                        int number = sc.nextInt();
                        encrypt(number);
                }
        }

封装的加密方法:
          public static void encrypt(int number)
        {
                //调用计算位数的方法保存到a数组中
                int order=getOrder(number);
                int[] a=new int[order];
               
                //取出每位数的数值,存到数组a中
                int count = number;
                int res=0;
                for(int i=0;i<order;i++)
                {
                        res=count%10;
                        count/=10;
                        a[i]=res;
                }

                //对每位数进行加密操作
                for(int i=0;i<order;i++)
                {
                        int num=a[i];
                        a[i]=(num+5)%10;
                }
               
                //调换第一位和第二位的数值
                int temp=a[0];
                a[0]=a[order-1];
                a[order-1]=temp;
               
                //计算出最终的加密数据
                int sum=1;
                int result=0;
                for(int i=order-1;i>=0;i--)
                {
                        int mult=a[i]*sum;
                        result+=mult;
                        sum*=10;
                }

                //输出
                System.out.println("加密后的暗号是:"+result);
        }
计算要加密数值是几位数的方法:
        public static int getOrder(int number)
        {
                int order=0;
                for(int consult=number;consult>0;order++)
                {
                        consult=consult/10;
                }
               
                return order;
        }

至此程序完成,,OK




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2