Java 企业级工具类全家桶-83-RSA非对称加解密与签名工具类
目录一、工具类功能二、所需环境三、方法与调用示例按需调用四、工具类源码可直接复制一、工具类功能公钥加密私钥解密、私钥签名公钥验签加密固定 RSA-OAEPSHA-256与 openssl 互通超过单块上限的长数据走数字信封一次搞定不用自己拼分段与会话密钥。二、所需环境JDK 17或以上三、方法与调用示例按需调用方法序号1方法用途一对一把 2048 位 RSA 密钥对生成好公钥私钥都是能直接存下来的 Base64 字符串省掉KeyPairGenerator、Base64编码、X.509/PKCS#8 规范名这一串样板方法定义public static KeyPairVo generateKeyPair()️入参解释public static KeyPairVo generateKeyPair()返回值解释KeyPairVopublic record KeyPairVo(String publicKeyBase64, String privateKeyBase64)公钥是 X.509 编码、私钥是 PKCS#8 编码边界口径固定 2048 位等价于generateKeyPair(2048)对外长期保密的数据用方法2 升到 3072 位私钥没有任何口令保护Base64 串拿到就能用落地要按密钥级别保管生成过程失败抛IllegalStateException方法示例KeyPairVo keyPair RsaUtils.generateKeyPair()的publicKeyBase64()长度拿到392字符MIIBIjANBgkqhkiG打头就是 X.509 公钥同一把密钥对的privateKeyBase64()长度拿到1624字符MIIEvQIBADANBgkq打头是 PKCS#8 私钥方法序号2方法用途按指定位数生成 RSA 密钥对把强度选在业务真正需要的那一档位数不合规当场拒绝不会打出一把 1024 位的弱密钥还以为更安全方法定义public static KeyPairVo generateKeyPair(int keyBits)️入参解释public static KeyPairVo generateKeyPair(密钥位数)返回值解释KeyPairVoBase64 形态的密钥对边界口径位数下限 2048NIST SP 800-131A且必须是 64 的倍数否则抛IllegalArgumentException消息带上当时的值位数越高单块上限、密文长度、签名长度都跟着变大加解密也越慢不要为了「看起来更安全」直接上 8192长期保密建议 3072 位方法示例generateKeyPair(3072)之后maxEncryptBytes(...)拿到318字节generateKeyPair(4096)之后maxEncryptBytes(...)拿到446字节generateKeyPair(1024)抛IllegalArgumentException: RSA密钥位数不得小于2048且必须是64的倍数当前为1024generateKeyPair(2050)抛IllegalArgumentException2050 不是 64 的倍数generateKeyPair(0)抛IllegalArgumentException消息同上并带上「当前为0」方法序号3方法用途算出这把公钥单次 RSA-OAEP 最多能加密多少字节超限前就先知道不用自己记「模数字节数减 66」这个公式换 2048 还是 3072 都能问出来方法定义public static int maxEncryptBytes(String publicKey)️入参解释public static int maxEncryptBytes(公钥)返回值解释int单块最大明文字节数边界口径结果是模数字节数减 66SHA-256 的 OAEP 开销2048 位即 190超过这个长度请改走方法8 的数字信封不要自己分段。分段密文里任何一段被替换、丢弃或换序解密端都察觉不到公钥接受裸 Base64 与 X.509 PEM 两种写法空白或解不出来的抛IllegalArgumentException方法示例maxEncryptBytes(keyPair.publicKeyBase64())拿到1902048 位公钥的单块上限maxEncryptBytes(keyPair3072.publicKeyBase64())拿到318maxEncryptBytes( )抛IllegalArgumentException: publicKey不能为null或空白maxEncryptBytes(这不是密钥)抛IllegalArgumentException消息是「密钥不是合法Base64含字母表之外的字符 …」方法序号4方法用途用公钥把一段 UTF-8 文本加密成 Base64 密文填充是 RSA-OAEP/SHA-256手机号、身份证号、订单摘要这类短字段一行加密密文能直接进 JSON方法定义public static String encryptByPublicKey(String data, String publicKey)️入参解释public static String encryptByPublicKey(明文文本, 公钥)返回值解释StringBase64 密文背后字节数固定等于模数字节数边界口径明文按字节算不能超过方法3 那个上限超了抛IllegalArgumentException消息里给出上限、当前长度和「改用 seal」的指引OAEP 带随机填充同一句明文两次加密的密文不一样别拿密文做等值比较MGF1 哈希被显式固定成 SHA-256与 openssl、BouncyCastle 打的包能互解JDK 那个转换名默认 MGF1 用 SHA-1明文或公钥为 null/空白、公钥格式非法都抛IllegalArgumentException方法示例encryptByPublicKey(订单号 ORD-2026-0001金额 128.50元, keyPair.publicKeyBase64())拿到256字节的密文Base64 形态连续两次加密同一句明文两次密文相同拿到falseencryptByPublicKey(191 字节的文本, keyPair.publicKeyBase64())抛IllegalArgumentException消息是「RSA-OAEP 单块最多加密 190 字节当前 191 字节长数据请用 seal(数字信封) 而不是分段加密」encryptByPublicKey( , keyPair.publicKeyBase64())抛IllegalArgumentException: 明文不能为null或空白方法序号5方法用途用私钥把方法4 产出的 Base64 密文解回原文本解不开时报错说清是密钥不对还是密文被改过不会一句「解密失败」打发方法定义public static String decryptByPrivateKey(String cipherTextBase64, String privateKey)️入参解释public static String decryptByPrivateKey(Base64 密文, 私钥)返回值解释String解密出来的明文文本边界口径私钥认 PKCS#8 的 Base64 与 PEM也认 openssl-traditional产出的 PKCS#1 私钥自动补 DER 头转成 PKCS#8把公钥当私钥传进来抛IllegalArgumentException消息是「privateKey格式不合法需要PKCS#8或openssl的PKCS#1私钥」密钥不匹配、密文被篡改、填充方案不对统一抛IllegalStateException消息是「RSA解密失败密钥不匹配或密文被篡改: Padding error in decryption」密文长度不等于模数字节数被截断过抛IllegalArgumentException不等IllegalStateException方法示例decryptByPrivateKey(cipherText, keyPair.privateKeyBase64())拿到订单号 ORD-2026-0001金额 128.50元decryptByPrivateKey(cipherText, keyPair.publicKeyBase64())抛IllegalArgumentException公私钥用反了密文中间改一个字节后解密抛IllegalStateException换成另一把私钥解密抛IllegalStateException方法序号6方法用途用公钥加密任意字节已序列化的对象、哈希摘要、二进制报文拿到定长密文字节载荷不是文本时不用先硬编码成字符串再加密方法定义public static byte[] encryptBytes(byte[] data, String publicKey)️入参解释public static byte[] encryptBytes(明文字节, 公钥)返回值解释byte[]密文字节长度等于模数字节数2048 位就是 256边界口径明文字节不能为null也不能是空数组超过单块上限同样抛IllegalArgumentException公钥可以是裸 Base64也可以是带-----BEGIN PUBLIC KEY-----的 PEM密文定长同一个上限内1 字节和 190 字节加密出来都是 256 字节方法示例encryptBytes(plainBytes, keyPair.publicKeyBase64())拿到256字节的密文把公钥写成 X.509 PEM 再encryptBytes(...)拿到256字节解回来仍是原文encryptBytes(new byte[0], keyPair.publicKeyBase64())抛IllegalArgumentException: 明文字节不能为null或空数组方法序号7方法用途用私钥把 RSA-OAEP 的密文字节解回原始字节与方法6 成对二进制链路全程不过 Base64少一次编解码方法定义public static byte[] decryptBytes(byte[] cipherData, String privateKey)️入参解释public static byte[] decryptBytes(密文字节, 私钥)返回值解释byte[]解密出来的原始字节边界口径解密前先校验长度必须等于模数字节数截断过的密文抛IllegalArgumentException并写明期望长度与当前长度填充校验不过密钥不对、密文被改抛IllegalStateException用 PKCS#1 密文或别的填充方案产出的密文走这里也是IllegalStateException方法示例Arrays.equals(decryptBytes(cipherBytes, keyPair.privateKeyBase64()), plainBytes)拿到true把密文砍掉最后一字节再解抛IllegalArgumentException: RSA密文长度必须等于模数字节数256当前为255方法4 的 OAEP 密文拿去走decryptByPrivateKeyPkcs1(...)抛IllegalStateException填充方案不匹配方法序号8方法用途把任意长度的数据封成数字信封随机一把 AES-256-GCM 会话密钥加密正文再用 RSA-OAEP 只加密这把密钥长正文不用分段也不用自己拼对称密钥正文被改动会在拆封时报错方法定义public static byte[] seal(byte[] plainText, String publicKey)️入参解释public static byte[] seal(明文字节, 公钥)返回值解释byte[]信封字节格式是「2字节会话密钥长度 RSA 加密的会话密钥 AesUtils 输出IV 12 字节 密文 GCM 标签」边界口径长度不限32 万字节照样一次封完会话密钥的加解密复用同包的AesUtils单独复制本文件时要一并带上它正文或 GCM 标签被动过一个字节open会抛IllegalStateException而不是给出错数据空数组也能封信封长度是286字节方法示例seal(longPayload, keyPair.publicKeyBase64())把 320000 字节正文封成320286字节的信封seal(new byte[0], keyPair.publicKeyBase64())拿到286字节的信封拆出来是 0 字节把信封最后一个字节翻一下再open(...)抛IllegalStateException消息是「AES/GCM校验失败密钥不匹配或密文已被篡改」seal(null, keyPair.publicKeyBase64())抛IllegalArgumentException: 明文不能为null方法序号9方法用途用私钥拆开方法8 的数字信封一次拿到完整正文长数据的接收端不用管会话密钥、IV、标签这些结构只管给信封拿正文方法定义public static byte[] open(byte[] envelope, String privateKey)️入参解释public static byte[] open(信封字节, 私钥)返回值解释byte[]信封里的正文字节边界口径信封为null或短于 3 字节抛IllegalArgumentException会话密钥长度对不上也抛IllegalArgumentException并写明当时的长度私钥不对时在解会话密钥这一步就抛IllegalStateException正文被改时在 GCM 校验那一步抛IllegalStateException只支持本类seal产出的格式别的信封协议不要指望它方法示例open(envelope, keyPair.privateKeyBase64())解出 320000 字节与方法8 的原文比对拿到true把 283 字节的信封剪掉 5 字节再解抛IllegalArgumentException消息是「信封格式不合法会话密钥长度256总长度283」open(new byte[]{1, 2}, keyPair.privateKeyBase64())抛IllegalArgumentException: 信封字节不能为null或短于长度前缀换一把私钥拆信封抛IllegalStateException方法序号10方法用途文本版数字信封把任意长度的明文封成一段 Base64 字符串密文要塞进 JSON 字段、数据库列或 URL 参数时用它比字节数组省事方法定义public static String sealText(String plainText, String publicKey)️入参解释public static String sealText(明文文本, 公钥)返回值解释StringBase64 形态的信封边界口径明文按 UTF-8 取字节中文不会因为编码出问题结构与seal完全一样只是多包了一层 Base64长度约为字节信封的 4/3明文为null或空白抛IllegalArgumentException方法示例sealText(订单号 ORD-2026-0001金额 128.50元, keyPair.publicKeyBase64())拿到440字符的 Base64 信封sealText( , keyPair.publicKeyBase64())抛IllegalArgumentException: 明文不能为null或空白方法序号11方法用途用私钥解开 Base64 文本信封直接还原文本收端拿到接口里那段字符串就能解不用自己先 Base64 解码方法定义public static String openText(String envelopeBase64, String privateKey)️入参解释public static String openText(Base64 信封, 私钥)返回值解释String信封里的明文文本边界口径与sealText成对异常口径跟着方法9信封串为null或空白抛IllegalArgumentException明文里的中文按 UTF-8 还原不受系统默认编码影响方法示例openText(envelopeBase64, keyPair.privateKeyBase64())拿到订单号 ORD-2026-0001金额 128.50元用别人的私钥解这个文本信封抛IllegalStateException方法序号12方法用途用私钥对文本做SHA256withRSA签名拿到 Base64 签名值签名方案是确定性的同一私钥同一原文逐字节相同能直接拿去对账方法定义public static String sign(String data, String privateKey)️入参解释public static String sign(待签名文本, 私钥)返回值解释StringBase64 签名值原始字节数等于模数字节数边界口径2048 位密钥的签名是 256 字节、Base64 后 344 字符3072 位是 384 字节同一原文同一私钥重复签结果一致这是它和 OAEP 加密最大的差别私钥为null/空白、格式非法抛IllegalArgumentException签名过程本身失败抛IllegalStateException它签的是原文的哈希别拿签名值当密文用方法示例sign(订单号 ORD-2026-0001金额 128.50元, keyPair.privateKeyBase64())的签名值拿到256字节对同一句明文签两次两次结果相同拿到trueBase64 长度344字符sign(x, keyPair.publicKeyBase64())抛IllegalArgumentException把公钥当私钥签名不被接受方法序号13方法用途对任意字节做SHA256withRSA签名拿到签名字节文件摘要、二进制报文这类不是文本的东西也能走同一套签名口径方法定义public static byte[] signBytes(byte[] data, String privateKey)️入参解释public static byte[] signBytes(待签名字节, 私钥)返回值解释byte[]签名字节长度等于模数字节数边界口径与sign只是编码差别同样的内容签出来是同一个值Base64 一下就和sign相同数据为null抛IllegalArgumentException签名字节直接进文件头或报文头不必再过 Base64方法示例Base64.getEncoder().encodeToString(signBytes(plainBytes, keyPair.privateKeyBase64()))与sign(...)同值拿到true3072 位密钥下signBytes(...)拿到384字节的签名值方法序号14方法用途用公钥校验文本的SHA256withRSA签名结果只有一个boolean对外的验签接口拿到垃圾输入不该变成异常这里把不匹配统一收敛成false方法定义public static boolean verify(String data, String publicKey, String signBase64)️入参解释public static boolean verify(原文, 公钥, Base64 签名)返回值解释boolean验签通过为true签名对不上为false边界口径签名值长度不对、换了公钥、原文被改过一律false不抛异常但签名串不是合法 Base64、或参数为null/空白属于入参非法仍然抛IllegalArgumentException公钥格式非法同样抛IllegalArgumentException消息是「publicKey格式不合法需要X.509(SubjectPublicKeyInfo)的Base64或PEM」方法示例verify(订单号 ORD-2026-0001金额 128.50元, keyPair.publicKeyBase64(), sign)原文没动拿到true原文末尾加一个字符再验签拿到false换成别的公钥验同一份签名拿到false签名串塞成 64 字节的无意义数据拿到false不是抛异常verify(订单号 ORD-2026-0001金额 128.50元, keyPair.publicKeyBase64(), 不是base64)抛IllegalArgumentException消息是「签名不是合法Base64含字母表之外的字符 」verify(null, keyPair.publicKeyBase64(), sign)抛IllegalArgumentException: 原始数据不能为null方法序号15方法用途用公钥校验字节签名字节链路的验签入口与方法14 同一套判定口径只是收的是原始字节和签名字节方法定义public static boolean verifyBytes(byte[] data, String publicKey, byte[] signData)️入参解释public static boolean verifyBytes(原始字节, 公钥, 签名字节)返回值解释boolean通过为true不通过为false边界口径签名值格式错误或验签不通过都返回false不包装成异常data、signData为null、公钥非法抛IllegalArgumentException签名字节长度不对也归进false方法示例verifyBytes(plainBytes, keyPair.publicKeyBase64(), signBytes(plainBytes, keyPair.privateKeyBase64()))拿到true把原始字节改一个字节再验拿到false方法序号16方法用途历史兼容入口用 PKCS#1 v1.5 填充加密字节对接仍在用它的老网关新系统不要选它这个填充有 Bleichenbacher 式选择密文攻击面方法定义public static byte[] encryptByPublicKeyPkcs1(byte[] data, String publicKey)️入参解释public static byte[] encryptByPublicKeyPkcs1(明文字节, 公钥)返回值解释byte[]密文字节长度等于模数字节数边界口径单块上限是模数字节数减 112048 位即 245 字节超了抛IllegalArgumentException并写明当前长度v1.5 也是随机填充同一明文两次密文不同只在对方还在用 v1.5 时用并确保错误信息不外泄「填充是否合法」的差异方法示例encryptByPublicKeyPkcs1(plainBytes, keyPair.publicKeyBase64())拿到256字节的密文同一句明文加密两次两次密文相同拿到falseencryptByPublicKeyPkcs1(246 字节, keyPair.publicKeyBase64())抛IllegalArgumentException消息是「PKCS#1 v1.5 单块最多加密 245 字节当前 246 字节」方法序号17方法用途历史兼容入口用私钥解 PKCS#1 v1.5 填充的密文给仍在用 v1.5 的老网关回包用别把新写的链路挂到它上面方法定义public static byte[] decryptByPrivateKeyPkcs1(byte[] cipherData, String privateKey)️入参解释public static byte[] decryptByPrivateKeyPkcs1(密文字节, 私钥)返回值解释byte[]解密出来的原始字节边界口径只解 v1.5 密文方法6 的 OAEP 密文走这里抛IllegalStateException两者不通用密文长度不等于模数字节数抛IllegalArgumentException解出来的明文字节要自己按约定编码转回字符串方法示例decryptByPrivateKeyPkcs1(cipherData, keyPair.privateKeyBase64())解回拿到helloOAEP 密文走这个入口抛IllegalStateException消息是「RSA解密失败密钥不匹配或密文被篡改: Padding error in decryption」四、工具类源码可直接复制领取方式 关注点赞收藏私信回复「java工具类」可领取100个工具类「Java企业级工具类全家桶1-100」的完整源码。 工具类已调试通过复制粘贴即可使用省时省力 可保存到自己网盘永久有效觉得对您有帮助麻烦点点关注啦您的关注是我创作的最大动力~

相关新闻

Java 企业级工具类全家桶-43-List转Map工具类

Java 企业级工具类全家桶-43-List转Map工具类

📋 目录 一、工具类功能二、所需环境三、方法与调用示例(按需调用)四、工具类源码(可直接复制) 一、工具类功能 一次遍历把集合摊成 Map,按键分组、按键分组并只抽取某个属性、一个键只对应一个值三种形…

2026/10/14 2:37:27 阅读更多 →
基于 STM32 的智能拐杖设计与 Proteus 仿真+源码

基于 STM32 的智能拐杖设计与 Proteus 仿真+源码

基于 STM32 的智能拐杖设计与 Proteus 仿真实现摘要我国视力障碍人群数量庞大,老龄化进程加速又使老年出行安全问题日益突出。传统盲杖功能单一,仅能提供触地探路的机械辅助,无法感知前方悬空障碍、积水坑洼与远距离障碍物,更缺乏…

2026/10/14 2:37:27 阅读更多 →
SUMO TraCI函数调用深度解析:从轮询到订阅的性能优化实战

SUMO TraCI函数调用深度解析:从轮询到订阅的性能优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:37:27 阅读更多 →

最新新闻

Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →
Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

04 分组量化 GEMM 内核 一句话:一个内核同时服务 decode(M1)与 prefill(M32),用「每线程固定几列、沿 K 扫」的映射让权重按 warp 满事务读、激活广播;用 z-split 把小 M 的欠填充网格补满&…

2026/10/14 3:23:34 阅读更多 →
Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

真实运行截图:一、功能都写完了,为什么还要写测试? 我这个物联网设备接入平台(Spring Boot 3.5 EMQX MySQL),从设备注册、MQTT 接入、消息入库到密钥轮换,功能主线已经跑通了。但每次面试话题…

2026/10/14 3:23:34 阅读更多 →
宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

结论先行:配偶单方所负的债务,并不天然由你连带承担。民法典第1064条确立了共债共签原则——共同签字或事后追认、为家庭日常生活需要所负的债务才是共同债务;超出日常生活需要的,原则上由举债方自担,除非债权人能证明…

2026/10/14 3:23:34 阅读更多 →
铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

坐落于苏州的拙政江南,以拙政园为文脉基底,打造连片式低密新中式院墅群落。白墙围合私家庭院,黛瓦错落铺陈屋面,亭廊婉转、叠石理水,将苏州园林的雅致意境藏进每一方栖居空间。项目全线屋面采用铝制小青瓦,以现代建材工艺复刻传统江南小青瓦的形与韵,更从根源破解传统陶瓦的运维…

2026/10/14 3:23:34 阅读更多 →
中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →