维吉尼亚密码Java实现

维吉尼亚密码是一种古典密码,属于代换密码,而且是多表代换密码。

密文对应的字母数字=明文对应的字母数字+密钥对应的字母数字
例如:
明文abcde,密钥abcd,对应的密文就是bdfhf,第五个明文e对应的密钥值又是a了。
12345+1234=24685
话不多说,上代码。

//明文
String passcode = passcode;
//密钥
String vige = vige;
//密钥长度
int move = vige.length();

//密文
String string = "";

//加密过程
for(int i = 0; i < passcode.length(); i++)
  	        {	char passwd = passcode.charAt(i);
  	        	char passVige = vige.charAt(i%move);
  	        	
  	            if(passwd >= 'A' && passwd <= 'Z')
  	            { 
  	            	if(passVige >= 'A' && passVige <= 'Z')
  	            	{
  	            		passwd = (char) (((passwd-'A')+(passVige-'A'+1))%26 + 'A');

  	            	} 
  	            	else if(passVige >= 'a' && passVige <= 'z')
  	            	{
  	            		passwd = (char) (((passwd-'A')+(passVige-'a'+1))%26 + 'A');
  	            	}
  	            }
  	            else if(passwd >= 'a' && passwd <= 'z')
  	            {
  	            	if(passVige >= 'A' && passVige <= 'Z')
	            	{
	            		passwd = (char) (((passwd-'a')+(passVige-'A'+1))%26 + 'a');

	            	} 
	            	else if(passVige >= 'a' && passVige <= 'z')
	            	{
	            		passwd = (char) (((passwd-'a')+(passVige-'a'+1))%26 + 'a');
	            	}
  	            }
  	            string += passwd;
  	        }
//解密
for(int i = 0; i < passcode.length(); i++)
  	        {	
  	        	char passwd = passcode.charAt(i);
	  	        char passVige = vige.charAt(i%move);
	        	
	            if(passwd >= 'A' && passwd <= 'Z')
	            { 
	            	if(passVige >= 'A' && passVige <= 'Z')
	            	{
	            		passwd = (char) (((passwd-'A')-(passVige-'A'+1)+26)%26 + 'A');
	
	            	} 
	            	else if(passVige >= 'a' && passVige <= 'z')
	            	{
	            		passwd = (char) (((passwd-'A')-(passVige-'a'+1)+26)%26 + 'A');
	            	}
	            }
	            else if(passwd >= 'a' && passwd <= 'z')
	            {
	            	if(passVige >= 'A' && passVige <= 'Z')
		          	{
		          		passwd = (char) (((passwd-'a')-(passVige-'A'+1)+26)%26 + 'a');
		
		          	} 
		          	else if(passVige >= 'a' && passVige <= 'z')
		          	{
		          		passwd = (char) (((passwd-'a')-(passVige-'a'+1)+26)%26 + 'a');
		          	}
	            }
	  	            string += passwd;
	  	       }
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值