zoukankan      html  css  js  c++  java
  • java aes encrypt

    本次使用aes 对称加密算法。

    选用aes的原因是,可以还原加密串。 程序如下:

        public static String encode(String content){
            KeyGenerator keyGen;
            try {
                keyGen = KeyGenerator.getInstance("AES");
                keyGen.init(128,new SecureRandom(SALT));
                
                Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    //坑在这里 Key key
    = new SecretKeySpec(keyGen.getKey().getEncoded(),"AES"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] bytes = cipher.doFinal(content.getBytes("utf-8")); StringBuilder sb = new StringBuilder(); for(int i=0;i<bytes.length;i++){ sb.append(bytes[i]+","); } sb.setLength(sb.length()-1); return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; }

    这样就可以实现加密了。

    问题在坑的这一行。

    是这样的, 一般来说,我们对 db connection的 用户名和密码进行加密计算,然后在其他机器上进行解密,然后进行连接。

    我本地使用该程序运算出的加密字符串在服务器上无法decode。

    经排查,问题出现在

    keyGen.getKey().getEncoded()  类型是 byte[]
    因为服务器和我本机的生成的表达式完全不同。导致服务器无法解密本地生成的字符串。
    这个就有点蛋疼了。 于是,切换成固定的byte[]
    服务器就可以解析本地生成的字符串了。
  • 相关阅读:
    任意数字 保留 两位 小数 PHP
    在JavaScript中处理JSON数据 jquery js 定义 json 格式
    相对定位 绝对定位 relative absolute position 图片定位a标签
    oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
    python
    python
    python-判断alter是否存在
    python-IE浏览器调用
    Python语言编写脚本时,对日期控件的处理方式
    python报错UnicodeDecodeError:
  • 原文地址:https://www.cnblogs.com/lykm02/p/4970485.html
Copyright © 2011-2022 走看看