java 加密解密算法

public class Cryptogram {

	//定义密码字库
	private  static final char[] code={'1','2','3','4','5',
									   'A','B','C','D','E',
									   'U','V','W','X','Y',
									   'Z','a','b','c','d',
									   'e','6','7','8','9',
									   '0','f','g','h','i',
									   'j','k','l','m','n',
									   'o','K','_','@','#',
									   '$','L','M','N','O',
									   'P','Q','R','S','T',
									   'p','q','r','s','t',
									   'u','v','w','x','y',
									   'z','F','G','H','I',
									   'J'};
	//密钥
	private  static final int key=5;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	   char[] in={'e','3','w','7','p'};
       char[] encryptcode=Cryptogram.encrypt(in);
       
       System.out.print("encryptcode-----");
       for(int i=0;i<encryptcode.length;i++)
    	  System.out.print(encryptcode[i]);
       System.out.println();
       char[] decryptcode=Cryptogram.decrypt(encryptcode);
       
       System.out.print("decryptcode-----");     
       for(int i=0;i<decryptcode.length;i++)
    	   System.out.print(decryptcode[i]);
	}
	
	//加密算法
	public static char[] encrypt(char[] data)
	{
		char[] tmp=new char[data.length];
		
		for(int i=0;i<data.length;i++)
		{
			int k=Cryptogram.getIndex(data[i]);
			int index=k+key;
			if(index<code.length)
			{	
				tmp[i]= code[index];
			}	
			else
			{	
				index=index-code.length;
				tmp[i]= code[index];
			}	
		}
		
		return tmp;
	}

	
	private static int getIndex(char data)
	{
		for(int i=0;i<code.length;i++)
			if(data==code[i])
				return i;
		return -1;
	}
	
	//解密算法
	public static char[] decrypt(char[] data)
	{
		char[] tmp=new char[data.length];
		
		for(int i=0;i<data.length;i++)
		{	
			int k=Cryptogram.getIndex(data[i]);
			int index=k-key;
			
			if(index<0)
			{
				index=code.length+index;
				tmp[i]=code[index];
			}
			else
			{	
				tmp[i]=code[index];
			}			
		}
		
		return tmp;
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值