美文网首页
支付对象加密操作

支付对象加密操作

作者: eric_fun | 来源:发表于2018-03-12 14:59 被阅读0次

    1:需求 一个对象部分属性属于敏感字段,需要有加密和解密的操作。

         思路:通常办法是定义一个util 有加密和解密两个方法,加密的时候获取对象属性 然后加密 然后再覆盖

         晋级方法:自定义注解的形式,需要加密的字节上添加该注解,定义工具类,工具类有加密和解密两个方法,加密时候把对象交给该工具类 自动完成属性加密

    步骤 1 ,自定义需要加密解密的注解

    public @interface Encrypt {

           enum type{BASE64,DES}

            type type()default type.DES;

    }

    2,自定义传输对象

    class A{

    private String name;

    @@Encrypt(type= type.DES)

    private String password

    }

    3,自定义工具类

    3.1 思路 获取实例,需要加密的属性

           Field[] fields = t.getClass().getDeclaredFields();
           Encrypt encrypt = field.getAnnotation(Encrypt.class);

    3.2 获取属性的值

    field = field.substring(0, 1).toUpperCase() + att.substring(1);

    method = obj.getClass().getMethod("get" + att);
    return method.invoke(obj);

    3.3 设置属性的新值
    Method method = obj.getClass().getMethod("set" + att, field.getType());
    return method.invoke(obj, arg);

    3.3 string 对象加密
    public static StringencodeStr(String plainText){

    byte[] b=plainText.getBytes();

        return Base64.encodeBase64URLSafeString(b);

    }

    3.4 string对象解密

          BASE64Encoder base64Encoder =new BASE64Encoder();

           byte[] byteMi=encryptByte(keySecert,strMing.getBytes());

            Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

            IvParameterSpec zeroIv =new IvParameterSpec(iv.getBytes());

            cipher.init(Cipher.ENCRYPT_MODE, getKey(keySecert),zeroIv);

            return cipher.doFinal(data);

    相关文章

      网友评论

          本文标题:支付对象加密操作

          本文链接:https://www.haomeiwen.com/subject/tuvnfftx.html