找回密码
 立即注册
老冷培训班汇总介绍老冷付费工具汇总介绍老鬼UI编程学院EasyClick所有产品简介EasyClick官方交流群
IOS授权价格IOS/安卓 自助提卡链接安卓-中控群控-电脑授权-购买IOSusb版投屏群控教程IOS脱机版激活教程
IOS脱机版wifi局域网脚本中控教程IOS脱机版wifi局域网群控投屏教程远程调试frp,兼容安卓/IOS热更新工具,兼容安卓/IOS脱机版老冷网盘
查看: 2027|回复: 3

[源码分享] 【源码】【通用】EC官方DES加解密java源码

[复制链接] |主动推送

1054

主题

135

回帖

4万

积分

管理员

【导师】

积分
40656
最后登录
2024-11-24
在线时间
1650 小时

兔年勋章金牌银牌铜牌导师微信认证热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老QQ认证EC VIP学员

发表于 2022-11-25 18:10:58 | 显示全部楼层 |阅读模式

马上注册,解锁更多高级玩法

您需要 登录 才可以下载或查看,没有账号?立即注册

×
对应的js暴露函数是:
encodeDecoder.desEncrypt DES加密
encodeDecoder.desDecrypt DES解密
encodeDecoder.des3Encrypt 3DES加密
encodeDecoder.des3Decrypt 3DES解密


源码:

[Java] 纯文本查看 复制代码
import android.util.Base64;

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

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class DesUtil {

    private final static String DES = "DES";


    /**
     * Description 根据键值进行加密
     *
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    public static String desCrypt(String data, String key) throws Exception {
        byte[] bt = encrypt(data.getBytes(), key.getBytes());
        return android.util.Base64.encodeToString(bt, 0);
    }

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

    }

    /**
     * Description 根据键值进行加密
     *
     * @param key 加密键byte数组
     * @return
     * @throws Exception
     */
    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数组
     * @return
     * @throws Exception
     */
    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 String des3Crypto(String src, String password) throws Exception {

        DESedeKeySpec deskey = new DESedeKeySpec(password.getBytes());
        SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
        Key key = skf.generateSecret(deskey);
        Cipher cipher1 = Cipher.getInstance("DESede/CBC/PKCS5Padding");
        IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
        cipher1.init(Cipher.ENCRYPT_MODE, key, iv);
        byte[] bbb = cipher1.doFinal(src.getBytes());

        if (bbb != null) {
            bbb = android.util.Base64.encode(bbb, 0);
            return new String(bbb);
        }
        return null;
    }

    public static String des3Decrypt(String src, String password) throws Exception {
        byte[] d = (android.util.Base64.decode(src, 0));
        if (d == null) {
            return null;
        }
        DESedeKeySpec deskey = new DESedeKeySpec(password.getBytes());
        SecretKeyFactory skf = SecretKeyFactory.getInstance("DESede");
        Key key = skf.generateSecret(deskey);
        Cipher cipher1 = Cipher.getInstance("DESede/CBC/PKCS5Padding");
        IvParameterSpec iv = new IvParameterSpec("12345678".getBytes());
        cipher1.init(Cipher.DECRYPT_MODE, key, iv);
        byte[] bbb = cipher1.doFinal(d);
        if (bbb == null) {
            return null;
        }
        return new String(bbb);
    }


}


VIP培训班介绍汇总[安卓/IOSusb版/IOS脱机版/PHP/nodejs等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=428

付费工具介绍汇总[热更/远程调试/IOS易语言UI/拓展插件等]
http://bbs.laoleng.vip/forum.php?mod=viewthread&tid=430

1

主题

40

回帖

517

积分

进阶

积分
517
最后登录
2024-11-24
在线时间
58 小时

QQ认证

发表于 2023-4-3 23:16:27 | 显示全部楼层
++++++++++++

1

主题

26

回帖

166

积分

小白

积分
166
最后登录
2024-11-24
在线时间
13 小时

QQ认证

发表于 2023-4-8 13:50:48 | 显示全部楼层
e9nHKqqJe9nHKqqJe9nHKqqJ

0

主题

20

回帖

152

积分

小白

积分
152
最后登录
2024-5-17
在线时间
27 小时

QQ认证

发表于 2023-9-1 14:29:46 | 显示全部楼层
6666666666666666666666666666666666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

想要力量吗骚年上一条 /2 下一条

关闭

免责声明|Archiver|手机版|老冷编程学院 ( 闽ICP备20013040号-2 )|网站地图

GMT+8, 2024-11-24 22:59

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表