数据加密与签名与业务安全与风控

共 27 题
#

1. BouncyCastle(bcprov)的扩展算法

A 使用 BouncyCastle 算法无需注册 Provider
B 它提供的是 JDK 已有的全部算法,无需扩展
C 它是 JCA Provider,通过注册后可用标准 API 使用国密(SM2/SM3/SM4)、Argon2、Ed25519 等 JDK 未内置算法 ✓ 正确答案
D 它只能做哈希,不能做对称加密
#

2. Java 加密与 Spring Security Crypto 模块

A Crypto 模块是独立于 JCA 的加密实现,不依赖其算法
B JCA/JCE 提供标准加密 API,Crypto 模块在其上封装 Encryptors/PasswordEncoder 等易用工具 ✓ 正确答案
C Encryptors 用于密码哈希,PasswordEncoder 用于数据加密
D Spring Security Crypto 只能用于认证,不能单独加密数据
#

3. 优惠券/积分的并发扣减安全,乐观锁/悲观锁/Redis Lua 原子操作如何选择

A 乐观锁冲突低时高效、悲观锁适合高冲突强一致、Redis Lua 脚本原子执行适合高并发,可组合使用 ✓ 正确答案
B Redis Lua 脚本可以保证与数据库的强一致
C 悲观锁无任何锁开销,最适合高并发
D 并发扣减只需在 SQL 中拼接字符串即可
#

4. 哈希算法(MD5/SHA-1/SHA-256/SM3)的安全边界

A MD5 可用于密码存储,因为速度快
B SHA-256 可以直接无盐存储密码
C MD5/SHA-1 已不安全,SHA-256/SM3 用于完整性校验,但密码存储仍需加盐慢哈希而非直接哈希 ✓ 正确答案
D SM3 是弱哈希,仅用于非安全场景
#

5. 对称加密(AES/DES/3DES)的差异

A DES 已不安全,3DES 逐步弃用,AES 是现代标准(128/256 位),业务应使用 AES 并配合 GCM 模式 ✓ 正确答案
B DES 密钥长度比 AES 更长,更安全
C 3DES 比 AES 更快更安全
D 三种算法分组大小相同,可互换
#

6. 接口限流(令牌桶/滑动窗口/漏桶)在 Spring Cloud Gateway 与 Redis 下的实现与选型

A 漏桶适合处理突发流量
B 令牌桶允许一定突发、漏桶恒定输出、滑动窗口统计窗口内请求数,网关可用 Redis 的令牌桶(RequestRateLimiter)实现 ✓ 正确答案
C 令牌桶输出速率恒定,无法应对突发
D 滑动窗口无法精确统计窗口内请求
#

7. 登录与短信接口的防爆破策略,验证码、人机校验(reCAPTCHA/滑块)与指数退避锁定如何组合

A 组合验证码、人机校验、指数退避锁定与短信频率限制,用 Redis 记录状态可有效防爆破 ✓ 正确答案
B 短信接口无需限制频率
C 只需要验证码即可完全防爆破
D 失败锁定后立即解除,无需退避
#

8. 设备指纹生成(浏览器 Canvas/WebGL/指纹哈希)与多账号关联检测

A 设备指纹只依赖 UA,非常稳定
B 多账号关联检测只需看 IP
C 通过 Canvas/WebGL/UA 等采集设备特征并哈希成指纹,同一指纹关联多个账号即可触发风控 ✓ 正确答案
D 设备指纹一旦生成永不变化
#

9. 防薅羊毛,注册、领券场景的业务一致性约束与幂等设计(唯一键/状态机/令牌)

A 通过唯一键/状态机/令牌建立幂等,配合 Redis SETNX 或数据库唯一索引保证并发不重复领取 ✓ 正确答案
B 幂等只需前端按钮加禁用即可
C 同一用户重复领券是允许的,无需幂等
D 唯一键幂等无法防止并发重复
#

10. 非对称加密(RSA/ECC/SM2)的差异

A RSA 密钥最短、性能最好
B 相同安全强度下 ECC 密钥更短、性能更好,SM2 是国密 ECC,均适合签名与密钥交换,不适合加密大数据 ✓ 正确答案
C 非对称加密适合加密大量数据
D SM2 与 RSA 基于同一数学难题
#

11. Java KeyStore(JKS)与 PKCS12

A JKS 是行业标准格式,跨语言兼容
B PKCS12 是跨平台标准格式、密码保护更强、可含证书链,现代项目优先使用,JKS 仅 Java 专有 ✓ 正确答案
C PKCS12 只能存 Java 专有的密钥
D JKS 密码保护比 PKCS12 更强
#

12. PKI 与 X.509 证书链

A 证书链从目标证书逐级回溯到受信任根 CA,验证签名、有效期、吊销与主机名,构成 HTTPS 信任基础 ✓ 正确答案
B 根 CA 证书是自签名的,无需信任即可验证
C 证书链验证只需看证书名称,无需验证签名
D 证书链验证不需要检查有效期
#

13. SSL/TLS 握手协议(1.2/1.3)的差异

A TLS 1.3 握手更少往返、强制前向保密、仅保留 AEAD 强密码套件,安全性更强 ✓ 正确答案
B TLS 1.3 仍支持 RSA 密钥交换与 CBC 模式
C TLS 1.2 与 1.3 握手流程完全相同
D TLS 1.3 移除前向保密以提升性能
#

14. 业务安全中的人机验证演进,从图片验证码到无感验证(行为分析/设备信任)

A 图片验证码无法被机器学习破解
B 无感验证完全不需要任何风险判断
C 人机验证从图片验证码演进到无感验证,通过行为分析、设备信任与风险分级实现低风险无感、高风险挑战 ✓ 正确答案
D 设备信任是唯一的人机验证手段
#

15. 国密算法(SM2/SM3/SM4)的工程应用

A JDK 内置支持全部国密算法,无需额外依赖
B SM4 是非对称算法,用于签名
C SM3 用于对称加密
D SM2 用于非对称签名/加密、SM3 用于哈希、SM4 用于对称加密,Java 中需通过 BouncyCastle 提供实现 ✓ 正确答案
#

16. 密钥派生(KDF)与 PBKDF2/bcrypt/scrypt/argon2

A PBKDF2 是 memory-hard 算法,抗 GPU 最强
B argon2 是 memory-hard 的现代标准,通过内存与迭代参数提高抗 GPU 成本,优于纯迭代的 PBKDF2/bcrypt ✓ 正确答案
C 所有 KDF 的抗暴力能力完全相同
D bcrypt 支持任意长度密码,无 72 字节限制
#

17. 密钥管理(KMS/Vault)的工程实现

A 密钥应硬编码在应用配置中以便使用
B KMS/Vault 集中安全存储密钥并支持轮换,应用通过 API 引用而不持有密钥,避免硬编码 ✓ 正确答案
C KMS/Vault 只能存储但不能轮换密钥
D 应用必须把密钥下载到本地才能使用
#

18. 接口签名(HMAC-SHA256)与重放攻击防护(nonce/timestamp/签名有效期)

A 只要校验签名就能完全防重放
B 用 HMAC-SHA256 对参数+时间戳+nonce 签名,服务端校验 timestamp 窗口与 nonce 去重来防重放 ✓ 正确答案
C nonce 用于防止参数被篡改
D timestamp 用于标识请求来源
#

19. 敏感操作的二次认证(OTP/扫码确认)与风险分级(低/中/高)策略设计

A 所有操作都要求最高强度的二次认证
B 风险分级与操作类型无关,与用户无关
C 二次认证只能通过短信 OTP,无法用 TOTP
D 高风险操作要求 OTP/扫码等二次认证,低中高风险分级驱动渐进式认证,平衡安全与体验 ✓ 正确答案
#

20. 数字签名(RSA/ECDSA)的原理

A 数字签名用公钥签名、私钥验证
B 签名是对数据加密,保证机密性
C 私钥签名公钥验证,保证了完整性、来源认证与不可否认,ECDSA 基于椭圆曲线密钥更短性能更好 ✓ 正确答案
D RSA 与 ECDSA 签名安全性完全相同,性能相同
#

21. 消息认证码(HMAC)与完整性保护

A HMAC 与普通哈希相同,都无密钥
B HMAC 用共享密钥与哈希计算认证标签,能防恶意篡改,但无法区分具体签名者,与数字签名的非对称机制不同 ✓ 正确答案
C HMAC 能提供不可否认性
D HMAC 用公钥验证消息
#

22. 行为风控(频率/地理位置/设备切换)的实时规则与离线模型协同

A 实时规则能发现所有未知风险模式
B 两者完全独立,不需要共享特征
C 离线模型无法处理复杂模糊风险
D 实时规则快速拦截明确风险、离线模型综合评价发现未知风险,两者结合特征做分级决策 ✓ 正确答案
#

23. 零知识证明(ZKP)的工程现状

A ZKP 允许证明陈述为真而不泄露信息,主要落地于区块链隐私与扩容,但计算开销与工程复杂度仍是难点 ✓ 正确答案
B ZKP 不需要可信设置,可随意使用
C ZKP 可以证明一切通用计算,且无成本
D ZKP 在 Java 生态已广泛普及,无落地难点
#

24. 风控系统的规则热更新与灰度发布(A/B 测试规则效果)的工程实现

A 规则更新必须重启服务才能生效
B 规则存配置中心由引擎热加载,通过流量分流做 A/B 对比效果,验证后再全量,实现快速迭代与可控风险 ✓ 正确答案
C A/B 测试无法对比新旧规则效果
D 灰度发布意味着新规则直接全量生效
#

25. 风控规则引擎与布隆过滤器在黑名单/设备指纹场景的应用与误判率控制

A 布隆过滤器不会误判,可完全替代数据库
B 布隆过滤器可在内存快速判断是否在黑名单,命中后需二次精确验证以消除假阳性误伤 ✓ 正确答案
C 布隆过滤器误判率与位数组大小无关
D 布隆过滤器只支持精确查询,不支持快速过滤
#

26. Java 25 JEP 470/JEP 524 PEM Encodings 预览边界

A 这些 PEM 编码能力以预览特性发布,需启用 --enable-preview,API 可能变更,生产应等稳定后再采用 ✓ 正确答案
B 预览特性默认启用,无需任何配置
C 预览特性 API 保证长期稳定,可放心使用
D PEM 编码只能通过 BouncyCastle 实现,JDK 不支持
#

27. 业务安全事件的审计日志与可追溯性(操作人/时间/设备/结果)设计

A 审计日志只需记录是否成功,无需其他字段
B 审计日志可随意修改,无需保护
C 审计日志应记录操作人、时间、设备、对象、结果与上下文,结构化为不可篡改并集中存储以支持追溯 ✓ 正确答案
D 审计日志不需要脱敏与保留策略