首页 > 其他分享 >杂记 2024-02-04 农历腊月25,立春

杂记 2024-02-04 农历腊月25,立春

时间:2024-02-04 17:57:01浏览次数:27  
标签:02 25 String 04 RC4 hutool Cipher static byte

1. 2024-02-04立春。立春,为二十四节气之首。立,是“开始”之意;春,代表着温暖、生长。时至立春,在我国的北回归线(黄赤交角)及其以南一带,可明显感觉到早春的气息。北回归线是一条重要纬线,其自西向东穿过中国云南、广西、广东、福建(海域)、台湾五省区。

《立春》 宋·白玉蟾
东风吹散梅梢雪,一夜挽回天下春。
从此阳春应有脚,百花富贵草精神。

《立春偶成》宋·张栻
律回岁晚冰霜少,春到人间草木知。
便觉眼前生意满,东风吹水绿参差。

2. 计算cookie的算法

导入必要的jar包

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.18</version>
</dependency>

代码

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import java.security.Key;

/**
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.18</version>
</dependency>
**/


public class SecretUtil {
    static final String publicKey = "我的公钥,用于加密";

    public static void main(String[] args) throws Exception {
        String userName = "用户名";
        String keyStr = "密码";
        String generatedCookieValue = encryptRC4ToString(keyStr.toUpperCase(), userName);   // 用密码的大写形式对userName进行RC4对称加密
        System.out.println(generatedCookieValue);
        System.out.println(decryptRC4(keyStr.toUpperCase(), generatedCookieValue));         // 用密码的大写形式对userName加密后的String进行RC4对称解密,因为RC4是对称加密,所以解密时也用相同的密钥进行解密
        System.out.println(ecryptRSAByPublicKey(keyStr, publicKey));    // 用publicKey对密码进行RSA非对称加密
    }

    private static String ecryptRSAByPublicKey(String textPasswd, String encPublicKey) {
        // 用encPublicKey对texyPassword进行RSA加密 因为是非对称加密,解密需要用私钥,我这里不知道私钥,所以不知道怎么解密。
        RSA rsa = SecureUtil.rsa(null, encPublicKey);
        return rsa.encryptBase64(textPasswd.getBytes(), KeyType.PublicKey);
    }

    public static String encryptRC4ToString(String key, String plaintext) {
        try {
            byte[] encrypted = encryptRC4(key, plaintext);
            return bytesToHex(encrypted);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    private static byte[] encryptRC4(String key, String plaintext) throws Exception {
        Cipher rc4 = Cipher.getInstance("RC4");
        Key secretKey = new SecretKeySpec(key.getBytes(), "RC4");
        rc4.init(Cipher.ENCRYPT_MODE, secretKey);
        return rc4.doFinal(plaintext.getBytes());
    }

    private static String decryptRC4(String key, String text) throws Exception {
        Cipher rc4 = Cipher.getInstance("RC4");
        Key secretKey = new SecretKeySpec(key.getBytes(), "RC4");
        rc4.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedBytes = rc4.doFinal(hexToBytes(text));
        return new String(decryptedBytes);
    }

    private static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }

    private static byte[] hexToBytes(String hexString) {
        int len = hexString.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4) +
                    Character.digit(hexString.charAt(i + 1), 16));
        }
        return data;
    }
}

 

标签:02,25,String,04,RC4,hutool,Cipher,static,byte
From: https://www.cnblogs.com/panda4671/p/18006698

相关文章

  • Nand2tetris Part1 lab04-lab06
    概述在前三个lab中,我们构建了hack计算机所需要的基础的芯片。后三个lab则是教我们如何使用这些芯片去搭建一个hack计算机并且使用汇编语言。Week04&Week05把这两个lab放在一起是因为他们给我的感觉更像是知识的互补。lab05教会你汇编语言的规范是什么,lab06则是......
  • SNOI 2024 幽默记
    先贴个我之前写的幽默NOIP游记吧!T1开考看了一眼,随便想了一会就有思路了。用stl搞了一下,大概开考后20min过掉所有大样例。然后就对着剩下三道题沉默了一整场考试。感觉T3是个数据结构,长得比较眉清目秀,就先去看了T3,但是越看越迷惑,没什么思路,就扔了去想T2。理解了一......
  • Good Bye 2023
    A本质就是判断\(\prod_{i=1}^{n}b_i\)是否能整除\(2023\)。输出被移除的数,只要令\(k-1\)个为\(1\),剩下的一个随便算算即可。B非常难绷。首先将\(a\)和\(b\)都除以\(\operatorname{gcd}(a,b)\),并记录原来的\(\operatorname{gcd}(a,b)\)为\(t\)。如果\(a=1\),......
  • 2024年生成式AI芯片市场规模将达500亿美元
    1月24日,德勤发布《2024科技、传媒和电信行业预测》中文版报告,2024年是科技、传媒和电信行业关键的一年,不少科技公司正利用生成式AI升级软件和服务,预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许多软件公司在产品中嵌入生成式AI,有些企业的产品将......
  • 代码随想录算法训练营第一天 | 27. 移除元素 | 704. 二分查找
     704.二分查找 已解答简单 相关标签相关企业 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入:numstarget输出:解释:nums......
  • 代码随想录算法训练营第十一天 | 20. 有效的括号 | 1047. 删除字符串中的所有相邻重
     有效的括号 已解答简单 相关标签相关企业 提示 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应......
  • Hello 2024C. Grouping Increases(贪心)
    我们只需要记录每个数结尾的数是多少(有点最长上升子序列的味道)这种子序列的题目很多都是这样的,因为不需要连续很多时候我们只记录最后一个元素是多少。\(记s为较大子序列结尾当前的数,t为较小子序列结尾的数,下面分类讨论\)\(当a[i]<=t<s时\)我们将a[i]既可以放进t所在的子序列,......
  • NVIDIA显卡驱动NVIDIA-Linux-x86_64-545.29.02 安装错误分析之一
    software/NVIDIA-Linux-x86_64-545.29.02/kernel-open/nvidia/libspdm_shash.c:在函数‘lkca_hmac_duplicate’中:/software/NVIDIA-Linux-x86_64-545.29.02/kernel-open/nvidia/libspdm_shash.c:90:26:错误:implicitdeclarationoffunction‘crypto_tfm_ctx_aligned’;didy......
  • 2024年:用OKR管理你的生活
    在科技高速发展的时代,越来越多的企业和团队开始采用OKR(ObjectivesandKeyResults)管理方法来设定目标并跟踪进度。你是否想过,将OKR理念引入个人生活,以更有效地实现人生目标?本文将探讨如何在2024年运用OKR管理你的人生。一、明确人生目标首先,要明确自己的人生目标。这需要你思考......
  • [SWPUCTF 2021 新生赛]Do_you_know_http
    HTTP请求头中各字段解释Accept :浏览器(或者其他基于HTTP的客户端程序)可以接收的内容类型(Content-types),例如Accept:text/plain。Accept-Charset:浏览器能识别的字符集,例如Accept-Charset:utf-8Accept-Encoding:浏览器可以处理的编码方式,注意这里的编码方式有别于字符集,这......