希尔(Hill)加密与解密的Java实现

希尔密码,是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。

原理非常简单,首先确定一个密钥,这个密钥为n × n的矩阵,并且必须是可逆的。然后将字符与数字创建映射表,一个字符对应一个数字。加密时,将明文分割为n个字符一组,在映射表中找到字符对应数字,每一组字符就变为一个1 × n 的矩阵,将这个矩阵与密钥相乘的结果模72,再在映射表中找数字对应字符转化,就得到了密文。解密时,先将字符转数字,n个一组,形成1 × n 的矩阵,把这些矩阵与密钥的逆矩阵分别相乘,左乘还是右乘需要与之前一致,将乘得的结果加72的倍数转为正数后模72,将这些数字通过映射表转为明文。

下面直接上代码,有一些自己实现的矩阵类Matrix_c和方法,请移步
Java实现整数矩阵的基本运算与初等变换(部分)

import java.util.*;

public class Hill {
   
    Character[] x = {
   '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','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',',','.','\'','?','!','@','-','+','*','/','1','2','3','4',
            '5','6','7','8','9',' '};
    //创建映射表
    HashMap<Character,Integer> wordMap = new HashMap();
    HashMap
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值