java实现波雷费密码算法示例代码
一、算法描述
波雷费密码是一种对称式密码,是首种双字母取代的加密法。
下面描述算法步骤:
1、从1号二维码M05,提取明文信息和密文,M05格式:
2、将提取的英文字母作密匙。除去重复出现的字母。将密匙的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依A-Z的顺序加入。(将Q去除)
3、将要加密的讯息分成两个一组。若组内的字母相同,将X加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。
4、在每组中,找出两个字母在矩阵中的地方。
若两个字母不同行也不同列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。
若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。
若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。
5、新找到的两个字母就是原本的两个字母加密的结果。
6、取密文前3个字符与后三个字符(大写字母)作为对应6位的红外报警开启码。
二、算法过程示例
例:二维码内容为:
1.明文信息hidethegold和密匙playfairexample
2.根据密钥形成5*5的矩阵。
PLAYF IREXM BCDGH JKNOS TUVWZ
3.明文处理为:“HIDETHEGOLDX”
4.就会得到密文:“BMNDZBXDKYGE”,
5.取密文前6个字符(大写字母)对应6位的报警码:0X42,0X4D,0X4E,0X44,0X5A,0X42
三、具体代码如下:
importsun.applet.Main; publicclassblf{ publicstaticvoidmain(String[]args){ Strings=""; get_blf(s); } publicstaticvoidget_blf(Stringssss){ Stringeng="ABCDEFGHIJKLMNOPRSTUVWXYZ"; Stringbeg=ssss.replaceAll("[<>0-9]",""); String[]ss=beg.split("\\|"); Stringmw=ss[0].toUpperCase(); Stringstr=ss[1].toUpperCase(); str=removeMethod(str); System.out.println(str); intbs=str.length()/5; intys=str.length()%5; System.out.println(ys); System.out.println(bs); char[][]arr=newchar[5][5]; for(inti=0;i =0) return(char)(hexValue+'0'); else return(char)(hexValue-10+'A'); } }
四、运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。