当前位置: 首页 > news >正文

java实现仿射密码_java实现仿射密码加密解密

本文实例为大家分享了java实现仿射密码加密解密的具体代码,供大家参考,具体内容如下

加密:将明文转化为对应的数字,如 ‘a'-> 0, ‘b'->1,…,'1'->26,'2'->27,…然后将数字进行仿射运算,求取出来的数字再转化为字符。即 密文=(K1*明文+K2)mod36

解密:密文转化为对应数字,然后进行仿射的逆运算,得到对应数字,然后将其转化为字符明文。解密 K3是K1的乘法逆元

import java.util.Scanner;

public class Affine{

public static void main(String[] args) {

char[] form = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',

'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0'

, '1', '2', '3', '4', '5', '6', '7', '8', '9'};

Scanner sc = new Scanner(System.in);

System.out.println("请输入待加密的明文:");

String MingWen = sc.nextLine();

MingWen=MingWen.toUpperCase();//将输入的明文全部大写

final int K1 = 103;

final int K2 = 103;

final int K3 = 31;

int [] cipherNum=new int[MingWen.length()];//用来存储数字化的密文

encryption(MingWen,form,K1,K2,cipherNum);

decryption(form,MingWen,K2,K3,cipherNum);

}

public static void encryption(String MingWen,char[] form,int K1,int K2,int[] cipherNum){

//第一步:将明文存入数组

char[] pla=new char[MingWen.length()];

for (int i = 0; i

pla[i]=MingWen.charAt(i);

}//已将明文存入字符数组pla中

//第二步:通过脚标找到明文中每个字符对应的数,参与加密运算

int[] MingWenNumber=new int[pla.length];

for (int i = 0; i

for (int j = 0; j

if (form[j]==pla[i]) {

MingWenNumber[i] = j;

}

}

}

//通过脚标将明文全部转化为数字

char[] cipher = new char[MingWen.length()];//cipher密码数组 用来存储密文

for (int i = 0; i

int a= Math.floorMod((K1*MingWenNumber[i]+K2),36);

cipherNum[i]=a;

cipher[i]=form[a];

//计算密文并存入数组中

}

System.out.println("加密结果是:");

System.out.println(cipher);

}

public static void decryption(char[] form,String Mingwen,int K2,int K3,int[] cipherNum){

char[] JieMI=new char[Mingwen.length()];

for (int i =0;i

JieMI[i]=form[Math.floorMod(K3*(cipherNum[i]-K2),36)];

}

System.out.println("解密结果是:");

System.out.println(JieMI);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

相关文章:

  • IPv4单播地址
  • 几个IPv4地址类型术语
  • mysql 模拟 数据库阻塞_[数据库]MySQL 5.6中如何定位DDL被阻塞的问题
  • 感谢Thom
  • 安卓 java 卡_安卓机为什么越用越卡?疯狂堆配置的背后到底隐藏着什么?
  • 如何把普通应用程序添加到系统服务(其他方法持续增加中)
  • 基于java酒店管理系统_课内资源 - 基于JAVA实现的互联网酒店管理系统
  • 在win2000下配置php,cgi,asp运行环境
  • 传统java io_Java IO编程全解(二)——传统的BIO编程
  • 喝啤酒可测出性格
  • java. new对象 堆栈_Java 堆内存与栈内存详细介绍
  • 最有用的网络命令
  • 手机谜语
  • app指纹登录 java后端_Android应用实现指纹登录
  • 有一家银行每天早上都在我的帐户里存入¥86,400
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 10个确保微服务与容器安全的最佳实践
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python3爬取英雄联盟英雄皮肤大图
  • React 快速上手 - 07 前端路由 react-router
  • REST架构的思考
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 两列自适应布局方案整理
  • 面试遇到的一些题
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 微信小程序--------语音识别(前端自己也能玩)
  • 一个项目push到多个远程Git仓库
  • 中文输入法与React文本输入框的问题与解决方案
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • # 计算机视觉入门
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #include<初见C语言之指针(5)>
  • $.ajax()方法详解
  • (0)Nginx 功能特性
  • (4.10~4.16)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (pytorch进阶之路)扩散概率模型
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十) 初识 Docker file
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .NET Core 成都线下面基会拉开序幕
  • .net mvc 获取url中controller和action
  • .NET 常见的偏门问题
  • .net 简单实现MD5
  • .NET 依赖注入和配置系统
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • @Autowired 与@Resource的区别
  • @Documented注解的作用
  • [2544]最短路 (两种算法)(HDU)