java 位运算简单应用

1, 判断奇偶: 

public static void isOdd(int num) {
		 //判断奇偶: 1奇数  0偶数 
		int res=num&1; 
		//判断res 
		String resStr=(res^1)==0?"奇数":"偶数";
		
		System.out.println(resStr);
	}

2,  两个整数互相交换:

public static void reverse(int a,int b) {
        System.out.println(a+"=="+b);//213  2
		
	    a= a^b;  
        b= b^a;  
        a = a^b;  
        
        System.out.println(a+"=="+b);//2  213
    }  

3,  使用位运算:  二次加密信息(目前只会初步加密, 不会使用位运算二次加密,待以后更新)

初步加密 + 解密 : (自定义原始密钥:  如  String metaKey="helloworld";)

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class Test {
	public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
		String metaKey="helloworld";
		//加密为byte数组
		byte[] datas=encrp(metaKey,"aas");//69,109,-37,22,84,112,100,111,
		//解密byte数组
		decrp( metaKey,datas);//aas
    }

    //静态方法: 加密---加密后返回byte[] , 可以使用位运算再进行二次信息加密
    encrp(String metaKey,String mesg);
    //静态方法: 解密
    decrtp(String metaKey, String encrtStr);
}

//静态方法: 使用某原始密钥--->初步加密

 public static  byte[] encrp(String metaKey,String datas) throws NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, InvalidKeySpecException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
	        // 原始密钥
			DESKeySpec dks = new DESKeySpec(metaKey.getBytes());
			// 密钥工厂
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
			//新的密钥: 工厂加工密钥
			SecretKey key= keyFactory.generateSecret(dks);
			
	            // Cipher密码对象:加密算法DES,DESede,Blowfish
				Cipher cipher = Cipher.getInstance("DES");
	            // 用密钥加密信息
	            cipher.init(Cipher.ENCRYPT_MODE, key);
	            byte[] res = cipher.doFinal(datas.getBytes());
	           
	            System.out.print("加密后的byte数组:---");
	            for(int i=0;i<res.length;i++) {
	            	System.out.print(res[i]+",");
	            }
	           return res;
	    }

//静态方法: 使用某原始密钥--->解密  被加密后的byte [ ]

public static void decrp(String metaKey,byte[] datas) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {
	    	 //原始DES密钥
			DESKeySpec dks = new DESKeySpec(metaKey.getBytes());
			//密钥工厂-->加工原始密钥
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
			//获取加工后的密钥
			SecretKey key= keyFactory.generateSecret(dks);
			
			 //密码对象Cipher:定义加密算法, DES,DESede,Blowfish
			Cipher cipher = Cipher.getInstance("DES");
            //解密模式
            cipher.init(Cipher.DECRYPT_MODE, key); 
            byte[] res = cipher.doFinal(datas); 
            
            String realdatas=	new String(res);
            System.out.println("\n解密后的数据....."+realdatas);//aas
	    }

猜你喜欢

转载自blog.csdn.net/eyeofeagle/article/details/80149466
今日推荐