万普插件库

jQuery插件大全与特效教程

计算机加密算法详解

加密算法要解决的主要是信息传输中的加密和解密问题。要假设数据传输过程是不安全的,所有信息都在被窃听的,所以发送端要把信息加密,接收方收到信息之后,要知道如何解密。

一、对称性加密

对称性密码,也叫共享密钥密码,顾名思义,这种加密方式用相同的密钥进行加密和解密。比如用一种最简单的对称加密的方法。都知道信息都可以表示成 0/1 比特序列,也知道相同的两个比特序列做异或运算的结果为 0。那么就可以生成一个长度和原始信息一样的随机比特序列作为密钥,然后用它对原始信息做异或运算,就生成了密文。反之用该密钥对密文做一次异或运算,就可以恢复原始信息。如密钥的长度和原始信息完全一致,如果原始信息很大,密钥也会一样大,而且生成大量真随机比特序列的计算开销也比较大。

前端js加密解密常用的六种方法

一、MD5加密

可以使用md5插件进行加密

插件地址:
github.com/blueimp/JavaScript-MD5

计算给定字符串值的(十六进制编码) MD5哈希值:

计算给定字符串值和键的(十六进制编码) HMAC -MD5哈希:

计算给定字符串值的原始MD5哈希值:

计算给定字符串值和键的原始HMAC -MD5哈希:

Java的CMD小程序实现AES加密和解密

我写的代码:


import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;

public class AesCmdTool {

    private static final String AES = "AES";
    private static final String SHA1PRNG = "SHA1PRNG";
    public static final String PRE_KEY = "DES@";

    /**
     * 将二进制转换成16进制
     */
    public static String parseByte2HexStr(byte[] buf) {
        StringBuilder sb = new StringBuilder();
        String hex = null;
        for (byte each : buf) {
            hex = Integer.toHexString(each & 0xFF);
            if (hex.length() == 1) {
                sb.append("0");
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }

    /**
     * 将16进制转换为二进制
     */
    public static byte[] parseHexStr2Byte(String hexStr) {
        if (hexStr == null) {
            return null;
        }

        int hexStrLen = hexStr.length();
        if (hexStrLen < 1) {
            return null;
        }

        int iLen = hexStrLen / 2;

        byte[] result = new byte[iLen];
        for (int i = 0; i < iLen; ++i) {
            int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
            int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
            result[i] = (byte) (high * 16 + low);
        }
        return result;
    }

    public static String encode(String secret, String strPwd) {
        byte[] encryptResult = encrypt(secret, strPwd);
        if (encryptResult == null) {
            return "";
        }
        return parseByte2HexStr(encryptResult);
    }


    public static String decode(String secret, String strPwd) {
        // 解密
        byte[] decryptFrom = parseHexStr2Byte(secret);
        byte[] decryptResult = decrypt(decryptFrom, strPwd);
        if (decryptResult == null) {
            return "";
        }
        return new String(decryptResult);
    }


    /**
     * 加密
     *
     * @param content  需要加密的内容
     * @param password 加密密码
     */
    private static byte[] encrypt(String content, String password) {
        try {
            KeyGenerator keyGen = KeyGenerator.getInstance(AES);
            SecureRandom secureRandom = SecureRandom.getInstance(SHA1PRNG);
            secureRandom.setSeed(password.getBytes());
            keyGen.init(128, secureRandom);
            SecretKey secretKey = keyGen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);
            Cipher cipher = Cipher.getInstance(AES);
            byte[] byteContent = content.getBytes(StandardCharsets.UTF_8);
            cipher.init(Cipher.ENCRYPT_MODE, key);
            return cipher.doFinal(byteContent);
        } catch (Exception e) {
            return null;
        }
    }

    private static byte[] decrypt(byte[] content, String password) {
        try {
            KeyGenerator keyGen = KeyGenerator.getInstance(AES);
            //防止linux下 随机生成key
            SecureRandom secureRandom = SecureRandom.getInstance(SHA1PRNG);
            secureRandom.setSeed(password.getBytes());
            keyGen.init(128, secureRandom);
            SecretKey secretKey = keyGen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, AES);
            Cipher cipher = Cipher.getInstance(AES);
            cipher.init(Cipher.DECRYPT_MODE, key);
            return cipher.doFinal(content);
        } catch (Exception e) {
            return null;
        }
    }

    public static String textDecodeForPreText(String data, String password) {
        if (data == null) {
            return "";
        }

        if (data.startsWith(PRE_KEY)) {
            return decode(data.substring(PRE_KEY.length()), password);
        }

        return data;
    }

    public static void main(String[] args) {

        String one = "看代码网";
        String pwd = "workForLife";
        String enText = encode(one,pwd);
        String deText = decode(enText,pwd);
        System.out.println("en:"+enText);
        System.out.println("de:"+deText);
    }
}

AngularJs 路由与多视图,ng-view指令和 UI-Router的嵌套State

AngularJs 路由与多视图

基于AngularJS入门与进阶(江荣波 著)这本书的笔记

AngularJS 1.x的demo

AngularJS1.x和Angular2,4,5是不一样的两个东西,构建方式,语法,都很多不同


在AngularJs应用中,一般把一个完整的HTML页面拆分成多个视图,每个视图实际上就是一段HTML片段,路由机制就是在每个视图和URL之间建立映射关系,当通过AngularJS路由API访问URL时,就可以加载对应的视图。

用 VitePress 搭建电子书,绝了!

大家好,我是杨成功。

自从《前端开发实战派》出版以后,好多买过的小伙伴都联系我,问我有没有电子书?纸质书在公司看不方便,一些现成的代码没办法复制。

确实没有电子版,我也听大家的建议上微信读书,结果那边审核没通过。我想不行我自己搞一个电子书呗,给买了纸书的朋友免费阅读,方便他们随时查阅。

经过一番调研,

手把手教你撸一个 Web 汇率计算器

作者:咕隆先森

来源:Python 技术

前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask、Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化Web开发库。

云函数(变相代理池)的三种常见利用

前言

之前学到一些云函数的利用,感觉很有趣,于是借此篇来总结一下三种对云函数的简单利用方式。

云函数

云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。总结云函数的几个特性:

Blazorise:Blazor 跨 CSS 框架 UI 解决方案

如何利用AngularJS打造一款简单Web应用

目前不同类型的Web开发人员都在广泛使用AngularJS,这套卓越的框架也充分证明了自身满足各类不同需求的能力。作为一名Web开发人员,无论大家是刚刚入门的新手还是已经拥有丰富的实践经验,选择一款优秀的框架都是必要的工作前提,而AngularJS正是这样一套理想的解决方案。在使用AnguarJS的过程中,大家可以同时学习到更多与应用程序开发相关的知识以及如何构建起更出色、更具吸引力的应用成果。如果大家希望在应用程序的创建工作中采取各类最佳实践,那么AngularJS也能够带来极大的助益。总而言之,这套框架的强大功能与特性永远不会让有着应用开发需求的朋友们失望。

零前端经验?我用DeepSeek自动生成Vue3代码,搞定CRUD页面!

上一篇DeepSeek一键生成后端CRUD!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言