安全编程之RAS与MD5的混合加密编程的实战demo

本篇介绍的是RAS与MD5的混合使用的demo,前后端加密流程可以有很多中,旨在思路,就直接上代码


public class Demo1 {

    //基本的url 经过RAS加密
    private static final String BASE_URL = "JVxVRAXQssre4hozo40u49aTWLSuFYwr8Vm6XH0k5S8=";

    public static void main(String[] args) {

        //假设http请求 从服务器端获取Key 
        String netServerKey = getNetServerKey();

        // 这里操作是在客户端做的
        //客户端对netServerKey进行MD5的解密 --- 只是保证了数据传输的安全性
        String myKey = MD5.convertMD5(netServerKey);
        //再次对myKey进行自定义规则的处理 得到真正的key
         String parseKey = parseKey(myKey);

        //通过秘钥parseKey 去解析一些在客户端存储比较重要的数据--(数据是经过RSA加密处理的)
        try {
            String baseUrl = RSAUtil.decrypt(BASE_URL, parseKey);
            System.out.println(baseUrl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //这里的操作是加密操作是在服务器端做的
    public static String getNetServerKey(){
        String serverKey = "onacbe"; //对key进行了自定义规则的排序
        return MD5.convertMD5(serverKey); //而这个自定义规则的排序后的Key进行MD5加密后返回到客户端
    }

    //自定义规则---解析得到真正的key
    private static String parseKey(String myKey) {
        String[] keys = new String[myKey.length()];
        for (int i =0;i<myKey.length();i++){
            keys[i] = String.valueOf(myKey.charAt(i));
        }
        StringBuilder builder = new StringBuilder();
        int length = keys.length;
        for (int j = length - 1; j > -1; j--) {
            if (j > 0 && j % 2 != 0) {
                String temp = keys[j];
                keys[j] = keys[j - 1];
                keys[j - 1] = temp;
            }
            builder.append(keys[j]);
        }
        String s = builder.toString();
        return s.substring(0, 1).toUpperCase() + s.substring(1) + length + length;
    }


}

猜你喜欢

转载自blog.csdn.net/qq_33429583/article/details/82862934
今日推荐