hill密码java实现_Hill密码(Java)

本文介绍了Hill密码的加密和解密原理,这是一种传统的密码体系。通过Java代码实现二阶矩阵的加密和解密过程,包括读取字母映射表、矩阵运算以及将字符串转换为数字矩阵等功能。示例展示了加密和解密过程,验证了算法的有效性。
摘要由CSDN通过智能技术生成

Hill密码是一种传统的密码体系。加密原理:选择一个二阶可逆整数矩阵A称为密码的加密矩阵,也就是这个加密体系的密钥。加密过程:

明文字母依次逐对分组,例如加密矩阵为二阶矩阵,明文就两个字母一组,如果最后一组不足(明文长度为奇数),就补充任意字母凑个双,构成二维向量组a。计算矩阵A乘以向量组a,得到新的二维列向量b,反查字母表得到两个字母即为密文字母。

也就是说,加密过程为:明文-->映射为数字矩阵-->经过矩阵加密-->映射为字符串(密文)

解密过程也是同样的过程,只不过中间使用矩阵解密,Hill密码是一种传统的密码体系。

根据这个过程,每一阶段功能代码如下:

首先创建一个类,HillCrypto,

成员变量有加密密钥矩阵和解密密钥矩阵,字母转数值映射和数值转字母映射

初始化阶段,实例化以上成员变量,其中映射表较大,因此写在了本地文件中便于重用,创建映射时需要读取本地文件。

文件内容如下:

7b448477cba1c28073b8bdd00628cb7c.png

代码如下:

importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;public classHillCrypto {private Maptable;private MapgetPlainMap;private int[][] encryption = { {1, 1},{0, 3}};private int[][] decryption;publicHillCrypto(String tableFilePath) {//TODO Auto-generated constructor stub

int mrow = encryption.length;int mcolumn = encryption[0].length;this.decryption = new int[mrow][mcolumn];//二阶矩阵的逆矩阵,如果是更高阶的,使用其他办法,比如通过余子式除以行列式得到逆矩阵,行列式的求法见鄙人的其他博客。

decryption[0][0] = (encryption[1][1] * 27 / (encryption[0][0]*encryption[1][1] - encryption[0][1]*encryption[1][0])) % 26;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值