Java小案例----数字密码的加密与解密

这篇具有很好参考价值的文章主要介绍了Java小案例----数字密码的加密与解密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在数据传输中,为了网络安全,数字的加密极为重要,以下将说明Java是如何将四位数字密码进行加密和解密的过程!

本例题如下:

Java小案例----数字密码的加密与解密

 

1.对数字的加密:

需要对数字加密,具体思路就是将数据先进行加五操作,然后进行对十取余,最后在进行逆置操作。首先就得输入数字,比如输入一个整形的四位数字,如果当靠一个四位数字可能操作会受限,所以为了对数字有一个更好的操作,所以我们需要将四位数字的每一位都放进一个数组里面,方面处理!需定义一个打包方法,将四位数字打包为一个数字!

    public static int[] pack(int result) {
        int arr[] = new int[4];
//        arr[0] = result / 1000 % 10;
//        arr[1] = result / 100 % 10;
//        arr[2] = result / 10 % 10;
//        arr[3] = result % 10;
//        由以上规律不难推到下面的批量操作!
        for (int i = 0; i < arr.length; i++) {
            arr[i] = result%10;
            result /= 10;
        }
        return arr;
}

 接着便可以对其进行进一步的操作,按照需求,需要将其数字每一位都进行加五以及对十取余的操作,最后在进行数字的逆置,便完成对数字的解密工作。于是定义了如下方法,专门对其进行加密操作:

 public static String lock(int[] arr) {
        String result = "";
        //以下为加五操作以及对十取余操作
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 5;
            arr[i] %= 10;
        }
        //以下为数组逆置操作
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        //以下为将数组重新拼接为字符串,在主函数中会将其转为整形!
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }

 注意:此时result返回的是字符串类型,可以通过调用类方法:

Integer.parseInt();//可以将字符串转换为整形!

 将字符串转换为整形还有许多方法,可以参考其他博主的博客!

完成以上步骤之后便完成了对数字的加密工作,那么如何将其进行解密呢?也是本案例中最为复杂的地方。

2.对数字的解密:

同样需要将传入的整形类型打包为数组类型方便操作,方法同上。而后就是要将刚刚的加密操作反过来操作,那么问题来了,对十取余的逆运算是什么呢?

Java小案例----数字密码的加密与解密

在上课的时候也没有听说过还有对十取余的逆运算,那么如何解决呢?

其实对于这道题是比较简单的,可以通过找规律的方法!

 依据规则,而且在数组当中,因为存的数据为原始数据的每一位数,所以不可能超过十,那么进行加五之后,取余之前的范围就为:

5,6,7,8,9,10,11,12,13,14(5~14)

用以上的数据取余之后便可得到以下:

5,6,7,8,9,0,1,2,3,4

 由上面的规律便可知道,当其数据在(5~9)的范围内,对十取余之后不变,当数据在(10~14)范围内时,数据只取各位的数字。于是你便可以定义如下的方法对其进行解码操作!

 public static String solve(int[] arr) {
        String result = "";
        //以下为对数据进行逆置操作
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
        //若在5~9范围内,则对其数据进行保留,然后进行减五操作,得到原数据。
            if(arr[i]>4 && arr[i]<10){
                arr[i] -= 5;
            }
        //若数据在0~4范围内(也就是取余之后范围在10~14的数据),
        //则对其先进行加十操作,然后再进行减五操作。
            else{
                arr[i] += 10;
                arr[i] -= 5;
            }
        }
        //最后对其进行拼接操作!
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }

完成以上操作便可以实现对数据的加密与解密啦!以下为完整代码!文章来源地址https://www.toymoban.com/news/detail-437186.html

package com.wxy.demo1;

import java.util.Scanner;

public class 数字加密 {
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        int arr[] = new int[4];

        System.out.println("请输入四位数!");
        int result = sc.nextInt();
        //此处为检测是否输入的数据为四位数,否则就一直重试!
        while (result / 10000 != 0) {
            System.out.println("您的输入非法!请重新输入一个四位数数字!");
            result = sc.nextInt();
        }
        arr = pack(result);
        System.out.println("请选择你的模式");
        int i = 0;
        System.out.println("输入1为加密,输入2为解密");
        i = sc.nextInt();
        switch (i) {
            case 1 -> result = Integer.parseInt(lock(arr));
            case 2 -> result = Integer.parseInt(solve(arr));
        }
        System.out.println(result);
    }

    public static int[] pack(int result) {
        int arr[] = new int[4];
//        arr[0] = result / 1000 % 10;
//        arr[1] = result / 100 % 10;
//        arr[2] = result / 10 % 10;
//        arr[3] = result % 10;
        for (int i = 0; i < arr.length; i++) {
            arr[i] = result%10;
            result /= 10;
        }
        return arr;
    }

    public static String lock(int[] arr) {
        String result = "";
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 5;
            arr[i] %= 10;
        }
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }

    public static String solve(int[] arr) {
        String result = "";
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>5 && arr[i]<10){
                arr[i] -= 5;
            }
            else{
                arr[i] += 10;
                arr[i] -= 5;
            }
        }//因为取余之后的范围为5,14.所以可以采用规律法。
        for (int i = 0; i < arr.length; i++) {
            result += arr[i];
        }
        return result;
    }
}

到了这里,关于Java小案例----数字密码的加密与解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。 那么我们就需要对这些铭文进行加密。 现在市场是加密的方式已经

    2024年02月02日
    浏览(41)
  • Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 Jasypt 全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。 可以使用 jasypt-spring-boot-starter 这个依赖项。从而实现属性源

    2024年02月04日
    浏览(66)
  • Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)

    1.JSON(JavaScript Object Notation) JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。JSON通过简单的key-value键值对来描述数据,可以被广泛用于网络通信、数据存储等各种应用场景,被广泛应用于互联网前后端数据交互与传输之中。 例如,

    2024年03月23日
    浏览(39)
  • 前端使用AES密码加密、解密,使用详细(crypto加密解密,前后端分离,AES加密解密)

    1、 首先安装 crypto-js插件,安装命令如下:    -S等同于--save,保存在package.json文件中,是在dependencies 下, --save安装包信息将加入到dependencies(生产环境)中,生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖; -D等同于--save-dev,也保存在package.j

    2024年02月11日
    浏览(60)
  • Python:实现密码加密解密(含完整源码)

    Python:实现密码加密解密(含完整源码) 密码加密是保护用户隐私的一种有效手段。本文将讲解如何使用Python编写一个简单的密码加密解密程序,并提供完整源代码。 步骤一:安装依赖库 我们需要使用到pycrypto库来实现密码加密解密的功能。安装pycrypto库,可以通过pip命令进

    2024年02月14日
    浏览(39)
  • Java:SpringBoot使用AES对JSON数据加密和解密

    客户端和服务端都可以加密和解密,使用base64进行网络传输 加密方 解密方 2.1、项目结构 2.2、常规业务代码 pom.xml Application.java WebMvcConfig.java CrossConfig.java JsonRequest.java JsonResult.java JsonResultVO.java IndexController.java UserController.java 2.3、加密的实现 application.yml SecretData.java DecryptRequ

    2024年02月11日
    浏览(54)
  • 前后端分离数据传输加解密方案(建议方案二)

          a.优点:实现简单,比明文传输安全       b.缺点:1)由于加密所有参数,效率低下 2)信息全加密,不利于前后端联调  3)密钥传输不安全,容易被拦截        优化点:前端生成AES对称加密密钥,用rsa私钥非对称加密将AES密钥加密,传给到后端,后端用rsa公钥解密后获

    2024年02月02日
    浏览(34)
  • RSA加密解密(无数据大小限制,php、go、java互通实现)

    RSA加解密中必须考虑到的**长度、明文长度和密文长度问题。明文长度需要小于**长度,而密文长度则等于**长度。因此当加密内容长度大于**长度时,有效的RSA加解密就需要对内容进行分段。 这是因为,RSA算法本身要求加密内容也就是明文长度m必须0m**长度n。如果小于这个长

    2024年02月15日
    浏览(75)
  • Android 数据SM4传输加解密

    第一:场景介绍   甲方要求,数据在传输过程中要加密。 第二:选择加解密方式: 这里面Android 和服务端都是选择SM4 第三:实现方式 1:服务端采用SpringBoot,在pom.xml 文件下添加依赖 2:在Android 端同样添加依赖,在module 下面build.gradle 3:服务端SM4工具类 4:Android SM4 工具类,

    2024年02月13日
    浏览(44)
  • Oracle数据传输加密方法

    服务器端“dbhome_1NETWORKADMIN”sqlnet.ora文件中添加 SQLNET.ENCRYPTION_SERVER = requested SQLNET.ENCRYPTION_TYPES_SERVER= (RC4_256) 添加后新的链接即刻生效,服务器无需重新启动。 也可以通过Net manager管理工具添加  各个参数含义如下: 是否加密(ENCRYPTION_SERVER)取值包含REJECTED、ACCEPTED、REQ

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包