发布时间:2026/9/7 15:49:01
涨薪技术|掌握加密签名接口测试实战 接口加密是指在网络传输过程中将数据进行加密以保护数据的安全性。接口加密可以采用多种加密算法如AES、DES、RSA等。测试接口加密的目的是验证接口加密算法的正确性和安全性。1加密与加密算法加密Encrypt是将目标文本转换成具有不同长度的、可逆的密文。也就是说加密算法是可逆的而且其加密后生成的密文长度和明文本身的长度有关。所以如果被保护数据在以后需要被还原成明文则需要使用加密。在加密算法中又分为对称加密symmetric encryption和非对称加密asymmetric encryption2对称加密对称加密采用了对称密码编码技术它的特点是加密和解密都是用同一个密钥这种方法在密码学中叫做对称加密算法.对称加密算法使用起来简单快捷密钥较短且破译困难除了数据加密标准DES另一个对称密钥加密系统是国际数据加密算法IDEA它比DES的加密性好而且对计算机功能要求也没有那么高.常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES注意: 因为前端的透明性对于登录密码等敏感信息,就不要使用JavaScript来进行对称加密. 因为别人可以从前端得到密匙后,可以直接对信息进行解密!1甲方选择某一种加密规则对信息进行加密 2乙方使用同一种规则对信息进行解密。 由于加密和解密使用同样规则简称密钥这被称为对称加密算 法Symmetric-key algorithm。 这种加密模式有一个最大弱点甲方必须把加密规则告诉乙方否则无 法解密。保存和传递密钥就成了最头疼的问题。3非对称加密非对称加密算法需要两个密钥公钥publickey和私钥privatekey公钥与私钥是一对如果用公钥对数据进行加密只有用对应的私钥才能解密如果用私钥对数据进行加密那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是甲方生成对密钥并将其中的一把作为公钥向其它方公开得到该公钥的乙方使用该密钥对机密信息进行加密后再发送给甲方甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公钥加密后的任何信息。常见的非对称加密算法有RSA、ECC移动设备用、Diffie-Hellman、El Gamal、DSA数字签名用​​​​​​​1乙方生成两把密钥公钥和私钥。公钥是公开的任何人 都可以获得私钥则是保密的。 2甲方获取乙方的公钥然后用它对信息加密。 3乙方得到加密后的信息用私钥解密。 1976年两位美国计算机学家Whitfield Diffie 和 Martin Hellman提出了一种崭新构思可以在不直接传递密钥的情况下完 成解密。这被称为Diffie-Hellman密钥交换算法。这个算法启发 了其他科学家。人们认识到加密和解密可以使用不同的规则只要这 两种规则之间存在某种对应关系即可这样就避免了直接传递密钥。 这种新的加密模式被称为非对称加密算法。4单向散列哈希加密哈希Hash是将目标文本转换成具有固定长度的字符串或叫做消息摘要。 当输入发生改变时产生的哈希值也是完全不同的。从数学角度上讲一个哈希算法是一个多对一的映射关系对于目标文本 T算法 H 可以将其唯一映射为 R并且对于所有的 TR 具有相同的长度所以 H 不存在逆映射也就是说哈希算法是不可逆的。基于哈希算法的特性其适用于该场景被保护数据仅仅用作比较验证且不需要还原成明文形式。比较常用的哈希算法是 MD5 和 SHA1。我们比较熟悉的使用哈希存储数据的例子是当我们登录某个已注册网站时在忘记密码的情况下需要重置密码此时网站会给你发一个随机的密码或者一个邮箱激活链接而不是将之前的密码发给你这就是因为哈希算法是不可逆的。需要注意的是在 Web 应用中在浏览器中使用哈希加密的同时也要在服务端上进行哈希加密。服务端哈希加密原因: 一方面因为不需要将密文解密成明文来比对密码另一方面是一旦加密算法和密钥泄露那么整个用户资料库就相当于明文存储了。如果前端传过来的是明文那么在注册时将其哈希存入数据库。登录时将密码哈希和数据库对应的数据比对若一致则说明密码正确。现在对于简单的哈希算法的攻击方法主要有寻找碰撞法和穷举法。所以为了保证数据的安全可以在哈希算法的基础上进一步的加密常见的方法有加盐、慢哈希、密钥哈希、XOR 等。5数字签名数字签名主要用于:确认信息来源于特定的主体且信息完整、未被篡改发送方生成签名接收方验证签名。发送方: 首先计算目标文本的摘要哈希值通过私钥对摘要进行签名将目标文本和电子签名发送给接收方。接收方: 验证签名的步骤如下1. 通过公钥破解电子签名得到摘要 D1 (如果失败则信息来源主体校验失败)2. 计算目标文本摘要 D23. 若 D1 D2则说明目标文本完整、未被篡改。数字签名与非对称加密区别:非对称加密加密/解密公钥加密私钥解密数字签名签名/验证私钥签名公钥验证加密签名接口实战01使用digest函数进行散列摘要函数在特定的哈希算法中返回加密的值并带有可选的salt大写字母和变量名。02使用commons-codec进行加密处理什么是commons-codec​​​​​​​Apache Commons Codec软件包包含用于各种格式例如Base64和 Hexadecimal的简单编码器和解码器。除了这些广泛使用的编码器 和解码器之外编解码器软件包还维护了语音编码实用程序的集合。 JMeter内置了commons-codec的jar包路径在JMeter_home的lib 目录下。 JMeter5.2.1使用的commons-codec-1.13.jar使用commons-codec进行加密1)URL编码​​​​​​​System.out.println(URLEncoder.encode(原文, UTF- 8));2)MD5​​​​​​​MessageDigest md MessageDigest.getInstance(MD5); // JDK提供的MD5方法 byte[] md5Bytes md.digest(原文.getBytes()); // 加密字节序列 得到 128个比特的摘要即16字节 System.out.println(Hex.encodeHex(md5Bytes)); // 每4 个比特转成一位16进制数 System.out.println( DigestUtils.md5Hex(原文)); // Apache common codec 提供的MD5方法最终调用的还是JDK3)SHA​​​​​​​//SHA-1160比特、SHA2SHA-256、SHA-384、SHA-512 MessageDigest md MessageDigest.getInstance(SHA- 256); // JDK提供的SHA方法 byte[] md5Bytes md.digest(原文.getBytes()); System.out.println(Hex.encodeHex(md5Bytes)); System.out.println( DigestUtils.sha256Hex(原文)); // Apache common codec 提供的SHA方法最终调用的还是JDK4)Base64​​​​​​​BASE64Encoder encoder new BASE64Encoder(); // JDK 提供 String enStr encoder.encode(原文.getBytes()); // 编码 enStr base64Img.replaceAll([\\s*\t\n\r], ); // 去掉可能有的换行符 System.out.println(enStr); BASE64Decoder decoder new BASE64Decoder(); System.out.println(new String(decoder.decodeBuffer(enStr))); // 解码 byte[] result Base64.encodeBase64(原 文.getBytes()); // Apache common codec提供 System.out.println(new String(Base64.decodeBase64(result))); // 解码5)AES​​​​​​​// 生成key KeyGenerator kg KeyGenerator.getInstance(AES); kg.init(128); // 确定密钥长度 byte[] keyBytes kg.generateKey().getEncoded(); // 格式化key Key key new SecretKeySpec(keyBytes, AES); Cipher cipher Cipher.getInstance(AES/ECB/PKCS5Padding); // 确定算 法 cipher.init(Cipher.ENCRYPT_MODE, key); // 确定密钥 byte[] result cipher.doFinal(原文.getBytes()); // 加密 System.out.println(Base64.encodeBase64String(result) ); // 不进行Base64编码的话那么这个字节数组对应的字符串就 是乱码 cipher.init(Cipher.DECRYPT_MODE, key); // 进入解密模式 System.out.println(new String(cipher.doFinal(result))); // 解密6)RSA​​​​​​​// 生成密钥对 KeyPairGenerator keyPairGenerator KeyPairGenerator.getInstance(RSA); keyPairGenerator.initialize(512); KeyPair keyPair keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey (RSAPublicKey)keyPair.getPublic(); RSAPrivateKey rsaPrivateKey (RSAPrivateKey)keyPair.getPrivate(); // 格式化私钥 PKCS8EncodedKeySpec pkcs8EncodedKeySpec new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory KeyFactory.getInstance(RSA); PrivateKey privateKey keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher Cipher.getInstance(RSA); // 确定算 法 cipher.init(Cipher.ENCRYPT_MODE, privateKey); // 确 定加密密钥 byte[] result cipher.doFinal(原文.getBytes()); // 加密 System.out.println(Base64.encodeBase64String(result) ); // 格式化公钥 X509EncodedKeySpec x509EncodedKeySpec new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory KeyFactory.getInstance(RSA); PublicKey publicKey keyFactory.generatePublic(x509EncodedKeySpec); cipher Cipher.getInstance(RSA); // 确定算法 cipher.init(Cipher.DECRYPT_MODE, publicKey); // 确 定公钥 System.out.println(new String(cipher.doFinal(result))); // 解密

相关新闻

2026/9/7 5:30:35

Godot 4集成Jolt物理引擎:从安装配置到性能优化实战指南

1. 项目概述:为什么选择Jolt作为Godot的物理引擎? 如果你正在用Godot做3D游戏,尤其是涉及到大量物理交互、角色战斗或者需要精确碰撞检测的项目,那么你很可能已经对内置的Bullet物理引擎感到过一丝“力不从心”。Bullet是个老牌引…

2026/8/27 8:52:37

剪切变硬阻尼离子凝胶的设计原理与应用

1. 项目概述:剪切变硬阻尼离子凝胶的创新设计这个项目探讨的是一种具有剪切变硬特性的阻尼离子凝胶材料,其核心创新点在于通过动态键与位阻效应的协同作用来实现独特的力学性能。作为一名材料工程师,我曾在智能阻尼材料领域工作多年&#xff…

2026/9/5 17:56:54

Tiva™ EMAC MAC地址寄存器与硬件过滤实战解析

1. 项目概述:从寄存器手册到网络数据过滤实战 如果你正在开发基于Tiva™ C系列微控制器的嵌入式网络设备,比如一个工业物联网网关或者一个智能家居的主控节点,那么你肯定绕不开以太网通信。而以太网通信的基石,除了物理层的PHY芯片…

2026/9/7 15:45:13

TCP面试核心知识点全攻略:从三次握手到拥塞控制

1. 为什么TCP值得你花时间死磕TCP这块内容,几乎是每一场技术面试躲不过去的坎。无论是校招还是社招,无论是后端、客户端还是网络方向,面试官总喜欢从TCP切入,先问三次握手、四次挥手,再问流量控制、拥塞控制、粘包拆包…

2026/9/7 15:45:13

LeetCode 693:交替位二进制数的位运算判断技巧

1. 题目到底在问什么:交替位二进制数的本质刚看到“交替位二进制数”这个题名,很多朋友第一反应是“又要写一个判断函数”,但真正动手之后才发现,这题考的是对二进制位模式的理解和位运算的基本功。LeetCode 693 的要求很简单&…

2026/9/7 15:45:13

Windows mklink命令实战:目录联接两行搞定数据同步与路径迁移

在日常工作中,我经常遇到这样的需求:代码仓库放在 D 盘开发目录,但某个工具只认 C 盘固定路径;或者笔记本的文档散落在多个磁盘,想统一汇总到网盘同步目录;又或者是重装系统后,想把旧的用户配置…

2026/9/7 15:45:13

深入解析MCP Transport层:从Stdio到HTTP的选型与排坑指南

1. MCP的Transport到底在解决什么问题先说结论:MCP的Transport层是整个协议的地基,它决定了你的MCP server怎么被找到、怎么被连接、怎么传数据、怎么处理断连。前面几篇笔记我分别梳理了MCP的协议模型、工具调用链路和资源体系,这篇专门把Tr…

2026/9/7 15:40:13

2026 上下文缓存进阶:把前缀契约写进SPEC,MonkeyCode 云端跑通

2026 上下文缓存进阶:别把整本手册每次都重算一遍 老赵 6 人小队给省级税务局做政策问答助手。客户口头说系统提示和口径手册每次都带上,回答要快,别让窗口再等。 他们把 18 页口径、角色说明、禁答清单整包塞进每一次请求。Qwen 每次都把前缀…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/6 11:40:10

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…