Android初学------java AES 加密 解密

本文介绍AES和DES算法的实现方法,包括加密和解密过程,并提供具体示例代码。文章涵盖密钥和向量设置、Cipher实例化、初始化参数及最终的加密解密操作。
 /**
     * AES算法,解密
     *
     * @param data 待解密字符串
     * @param key  解密私钥,长度不能够小于16位
     * @return 解密后的字节数组
     * @throws Exception 异常
     */
    public static String decode(String key,String data) {
    	if(data == null)
    		return null;
        try {
        	// 向量IV
    		String IV = xxx  //自己定制
    		// 加密结果
    		String result =<span style="font-family: Arial, Helvetica, sans-serif;">data</span> //根据自己需求得到
    		result = result.replace("!", "+").replace(",", "/").replace("]", "=").replace("@", "%");  //自身需求制定加密解密规则
        	byte[] raw = key.getBytes();  
	    	SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
	    	 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, paramSpec);
            byte[] encrypted1 = new BASE64Decoder().decodeBuffer(result);// 先用base64解码
            byte[] original = cipher.doFinal(encrypted1);
            return new String(original);
        } catch (Exception e){
    		e.printStackTrace();
    		return null;
        }
    }


 /**
     * DES算法,加密
     *
     * @param data 待加密字符串
     * @param key  加密私钥,长度不能够小于16位
     * @return 加密后的字节数组,一般结合Base64编码使用
     * @throws InvalidAlgorithmParameterException 
     * @throws Exception 
     */
    public static String encode(String key,String data) {
    	if(data == null)
    		return null;
    	try{
	        //key的长度不能够小于16位字节
	    	String A= data// 需要加密的字符串
	    	String IV =   // 向量
	    	byte[] raw = key.getBytes();
	    	SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
	    	Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
            AlgorithmParameterSpec paramSpec = iv;
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, paramSpec);
            byte[] encrypted = cipher.doFinal(data.getBytes());  //对A 进行
	        String encrypted1 = new BASE64Encoder().encodeBuffer(encrypted);// 先用base64解密
	        encrypted1=encrypted1.replace("+", "!").replace("/", ",").replace("=", "]").replace("%", "@"); <span style="font-family: Arial, Helvetica, sans-serif;">//自身需求制定加密解密规则</span>
	        return encrypted1; //返回加密结果
    	}catch(Exception e){
    		e.printStackTrace();
    		return null;
    	}
    }


注意细节!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值