任意长度密码(密码可输入大小写字母 和 数字)的加密与解密

密码的加密: 
输入一串任意长度的密码可包含大小写字母和数字 
加密规则如下: 
每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和最后位交换,第二位和倒数第二位交换....输入一个未加密数据,进行加密,并解密。

package java_exercise;
/*
    密码的加密:
    输入一串任意长度的密码可包含大小写字母和数字
    加密规则如下:
    每位数字都加上5,然后用和除以10的余数代替该数字,
    再将第一位和最后位交换,第二位和倒数第二位交换....
    输入一个未加密数据,进行加密,并解密。
 */
import java.util.Arrays;
import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str;
        int temp;
        System.out.println("输入密码:");

        str=scanner.next();
        int n=str.length();

        //字符串转换成字符,存入数组
        int [] arr = new int[n];
        for (int i = 0; i <arr.length ; i++) {
            arr[i] = str.charAt(i)-48;
        }

        //System.out.println(Arrays.toString(arr));

        //加密:每位数字都加上5,然后用和除以10的余数代替该数字
        for (int i = 0; i <arr.length ; i++) {
            arr[i] +=5;
            //arr[i]=arr[i]%10;
        }

        //加密:第一位与倒数第一位交换,第二位与倒数第二位交换...
        for (int i = 0; i <(arr.length)/2 ; i++) {
            temp=arr[i];
            arr[i]=arr[arr.length-1-i];
            arr[arr.length-1-i]=temp;
        }
        System.out.println("加密:");
        System.out.println(Arrays.toString(arr));

        //解密
        //将位置换回
        for (int i = 0; i <(arr.length)/2 ; i++) {
            temp=arr[i];
            arr[i]=arr[arr.length-1-i];
            arr[arr.length-1-i]=temp;
        }
        //
        for (int i = 0; i <arr.length ; i++) {

           // arr[i]=arr[i]+10;     //  * 一个数除以10的余数代替该数字  返回应该+10 再%10  而不是*10

            arr[i] -=5;
            //arr[i]=arr[i]%10;
        }

        System.out.println("解密:");
        for (int i = 0; i < arr.length; i++) {

                char a= (char) arr[i];
                switch(a){         //switch/case去区分字母和数字
                    case 74:
                        System.out.print('z'+" ");break;
                    case 73:
                        System.out.print('y'+" ");break;
                    case 72:
                        System.out.print('x'+" ");break;
                    case 71:
                        System.out.print('w'+" ");break;
                    case 70:
                        System.out.print('v'+" ");break;
                    case 69:
                        System.out.print('u'+" ");break;
                    case 68:
                        System.out.print('t'+" ");break;
                    case 67:
                        System.out.print('s'+" ");break;
                    case 66:
                        System.out.print('r'+" ");break;
                    case 65:
                        System.out.print('q'+" ");break;
                    case 64:
                        System.out.print('p'+" ");break;
                    case 63:
                        System.out.print('o'+" ");break;
                    case 62:
                        System.out.print('n'+" ");break;
                    case 61:
                        System.out.print('m'+" ");break;
                    case 60:
                        System.out.print('l'+" ");break;
                    case 59:
                        System.out.print('k'+" ");break;
                    case 58:
                        System.out.print('j'+" ");break;
                    case 57:
                        System.out.print('i'+" ");break;
                    case 56:
                        System.out.print('h'+" ");break;
                    case 55:
                        System.out.print('g'+" ");break;
                    case 54:
                        System.out.print('f'+" ");break;
                    case 53:
                        System.out.print('e'+" ");break;
                    case 52:
                        System.out.print('d'+" ");break;
                    case 51:
                        System.out.print('c'+" ");break;
                    case 50:
                        System.out.print('b'+" ");break;
                    case 49:
                        System.out.print('a'+" ");break;
                    case 42:
                        System.out.print('Z'+" ");break;
                    case 41:
                        System.out.print('Y'+" ");break;
                    case 40:
                        System.out.print('X'+" ");break;
                    case 39:
                        System.out.print('W'+" ");break;
                    case 38:
                        System.out.print('V'+" ");break;
                    case 37:
                        System.out.print('U'+" ");break;
                    case 36:
                        System.out.print('T'+" ");break;
                    case 35:
                        System.out.print('S'+" ");break;
                    case 34:
                        System.out.print('R'+" ");break;
                    case 33:
                        System.out.print('Q'+" ");break;
                    case 32:
                        System.out.print('P'+" ");break;
                    case 31:
                        System.out.print('O'+" ");break;
                    case 30:
                        System.out.print('N'+" ");break;
                    case 29:
                        System.out.print('M'+" ");break;
                    case 28:
                        System.out.print('L'+" ");break;
                    case 27:
                        System.out.print('K'+" ");break;
                    case 26:
                        System.out.print('J'+" ");break;
                    case 25:
                        System.out.print('I'+" ");break;
                    case 24:
                        System.out.print('H'+" ");break;
                    case 23:
                        System.out.print('G'+" ");break;
                    case 22:
                        System.out.print('F'+" ");break;
                    case 21:
                        System.out.print('E'+" ");break;
                    case 20:
                        System.out.print('D'+" ");break;
                    case 19:
                        System.out.print('C'+" ");break;
                    case 18:
                        System.out.print('B'+" ");break;
                    case 17:
                        System.out.print('A'+" ");break;
                    default:
                        System.out.print(arr[i]+" ");
                        break;
                }


        }

    }
}

因为学艺不精,不知道怎么将字母与数字在数组中分离开,所以采用了switch/case的方法,看着比较麻烦。希望大佬们能指点一下,能简化一下我的代码。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值