码迷,mamicode.com
首页 > 其他好文 > 详细

DES加密,前后台加密

时间:2018-07-31 19:17:32      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:generate   mis   ram   str   操作   @class   mon   lan   utf8   

导入两个js文件

https://blog-static.cnblogs.com/files/guilf/tripledes.js

https://blog-static.cnblogs.com/files/guilf/mode-ecb-min.js

 

DES.java

package com.banksteel.openerp.commons.utils;

import java.io.IOException;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * @description:密码加解密
 * @projectName:openerp-commons-V2SP54
 * @className:DES.java
 * @author:
 * @createTime:2018年7月27日 下午2:01:25
 * @version 1.0
 */
@SuppressWarnings("restriction")
public class DES {			

    private final static String DES = "DES";

    /**
     * Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     * @throws Exception
     */
    public static String encrypt(String data, String key) throws Exception {
        byte[] bt = encrypt(data.getBytes(), key.getBytes());
        String strs = new BASE64Encoder().encode(bt);
        return strs;
    }

    /**
     * Description 根据键值进行解密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws IOException
     * @throws Exception
     */
    public static String decrypt(String data, String key) throws Exception {
        if (data == null) return null;
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] buf = decoder.decodeBuffer(data);
        byte[] bt = decrypt(buf,key.getBytes());
        return new String(bt);
    }

    /** Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     */
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();
        //从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成加密操作
        Cipher cipher = Cipher.getInstance(DES);
        // 用密钥初始化Cipher对象
        cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
        return cipher.doFinal(data);
    }


    /**
     * Description 根据键值进行解密
     * @param data
     * @param key   加密键byte数组
     */
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();
        // 从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成解密操作
        Cipher cipher = Cipher.getInstance(DES);

        // 用密钥初始化Cipher对象
        cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
        return cipher.doFinal(data);
    }

//  public static void main(String[] args) throws Exception {
//  	System.out.println(encrypt("123456", "e9284d45-cf2a-4e46-9367-f122413ca6b0"));
//  	System.out.println(decrypt("88Fypeu1fTg=", "e9284d45-cf2a-4e46-9367-f122413ca6b0"));
//
//
//  }

}

  js调用方法

<script src="./js/tripledes.js"></script>
  <script src="./js/mode-ecb-min.js"></script>

调用方式: function encryptByDES(message, key) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
    }

  

 

DES加密,前后台加密

标签:generate   mis   ram   str   操作   @class   mon   lan   utf8   

原文地址:https://www.cnblogs.com/guilf/p/9397080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!