java实现仿射密码加密解密
Java 实现仿射密码加密解密 Java 仿射密码加密解密是一种常用的加密算法,它可以将明文转换为密文,并且可以逆运算将密文转换回明文。下面我们将详细介绍 Java 实现仿射密码加密解密的相关知识点。 仿射密码加密解密的原理是:将明文转换为数字,然后进行仿射运算,求取出来的数字再转换为字符。具体来说,仿射密码加密解密可以分为两个步骤:加密和解密。 加密的步骤是:将明文转换为数字,然后进行仿射运算,求取出来的数字再转换为字符。仿射运算的公式为:密文=(K1*明文+K2)mod36其中,K1和K2是仿射密码的密钥。 解密的步骤是:将密文转换为数字,然后进行仿射的逆运算,得到对应数字,然后将其转换为字符。仿射逆运算的公式为:明文=(K3*(密文-K2))mod36其中,K3是K1的乘法逆元。 在 Java 中,我们可以使用以下代码来实现仿射密码加密解密: ```java 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 < MingWen.length(); i++) { pla[i] = MingWen.charAt(i); } // 第二步:通过脚标找到明文中每个字符对应的数,参与加密运算 int[] MingWenNumber = new int[pla.length]; for (int i = 0; i < pla.length; i++) { for (int j = 0; j < form.length; j++) { if (form[j] == pla[i]) { MingWenNumber[i] = j; } } } // 通过脚标将明文全部转化为数字 char[] cipher = new char[MingWen.length()]; for (int i = 0; i < MingWen.length(); 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 < Mingwen.length(); i++) { JieMI[i] = form[Math.floorMod(K3 * (cipherNum[i] - K2), 36)]; } System.out.println("解密结果是:"); System.out.println(JieMI); } } ``` 在上面的代码中,我们首先定义了一个 char 数组 `form`,它包含了所有可能的字符。然后,我们使用 `Scanner` 对象来读取用户输入的明文,并将其转换为大写字母。接着,我们定义了三个常量 `K1`、`K2` 和 `K3`,它们分别是仿射密码的密钥。 在 `encryption` 方法中,我们首先将明文转换为数字,然后进行仿射运算,求取出来的数字再转换为字符。在 `decryption` 方法中,我们首先将密文转换为数字,然后进行仿射的逆运算,得到对应数字,然后将其转换为字符。 Java 实现仿射密码加密解密是一种常用的加密算法,它可以将明文转换为密文,并且可以逆运算将密文转换回明文。



















- 粉丝: 9
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年网络安全知识竞赛题库非单选.docx
- 云数据采集中心及大数据计算平台建设方案.docx
- 网络监控工作的自我总结.doc
- 信息系统安全改.pptx
- 基于单片机的步进电机电路控制设计英文文献及翻译.docx
- 计算机中进制及进制转换.ppt
- 智能家居场景方案PPT课件.ppt
- 国际互联网站建设方案.docx
- 2023年北邮大三下第次数据库实验报告.doc
- 某商场项目管理及企划管理知识方案.ppt
- 关于android面试自我介绍.doc
- 2023年注册咨询师继续教育通信节能减排新技术试题.docx
- 嵌入式CC++笔试与面试题集(含答案、史上最全).doc
- 谈多媒体技术在办公自动化中的应用.pdf
- 有关网络营销若干问题的思考(lunwen7139。。。.ppt
- 数据库课程设计商品进销存管理系统.doc


