zoukankan      html  css  js  c++  java
  • 对称加密——对入参进行DES加密处理

    体验更优排版请移步原文http://blog.kwin.wang/programming/symmetric-encryption-des-js-java.html

    对称加密是最快速、最简单的一种加密方式,加密和解密共用一个对称秘钥,因其高效性,被广泛应用在加密协议中。今天恰巧用到,在此总结一下。

    我们项目中需要在前端js里对入参进行DES加密传入后台,后台java再进行解密,网上找了一个谷歌的DES加密js包crypto-js点此下载

    下载完成之后找到两个js文件引入项目工程中,

    1
    2
    <script type="text/javascript" src="libs/crypto/tripledes.js" ></script>
    <script type="text/javascript" src="libs/crypto/mode-ecb.js" ></script>

    js中对params(json对象)加密:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function encryptParamsByDES(params, key) {
    var keyHex = CryptoJS.enc.Utf8.parse(key),
    desParams = {};
    if(!params || JSON.stringify(params) == '{}'){
    return {};
    }else{
    $.each(params, function(i, val) {
    var desVal = CryptoJS.DES.encrypt(val, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
    });
    desParams[i] = desVal.toString();
    });
    return desParams;
    }
    }
    console.log(encryptParamsByDES({name: 'test', password: '123456'}, 'kwinwang'));

    将对称秘钥设置为kwinwang,测试加密输出:

    Object {name: “r5vQ2jNkBsc=”, password: “nqp+WDNwUFw=”}

    前端加密就完成了,我们再用java尝试解密,

    1
    2
    3
    4
    5
    6
    public static void main(String[] args) throws Exception {
    String decName = DESUtil.decryption("r5vQ2jNkBsc=", "kwinwang");//解密name
    String decPassword = DESUtil.decryption("nqp+WDNwUFw=", "kwinwang");//解密password
    System.out.println("明文name:" + decName);
    System.out.println("明文password:" + decPassword);
    }

    执行main方法,控制台输出:

    后台解密成功!简直不敢相信,但就是这么简单。

    附件下载:DESUtil工具类(Java)

  • 相关阅读:
    Mysql事后触发器练习
    基础算法2.1——枚举法
    JSP第二次作业:使用session记录次数的猜数游戏
    JSP第一次作业:使用Cookie记录用户上次访问时间
    Python数据清洗见闻
    Python作业碎碎念
    数组那些事儿
    %1e9+7问题收录
    DB2数据库关于delete in id和batch delete的性能对比
    关于sql知识全面总结
  • 原文地址:https://www.cnblogs.com/kaidarwang/p/7563450.html
Copyright © 2011-2022 走看看