HSM KitHSM Kit
中文

PIN PVV(VISA):PIN 验证值计算

Payment Security# PVV# VISA# PIN 验证# PDK
Last Updated: 2026年5月21日5 min readBy HSM Kit Team
Need to calculate this now?
Use our free online PIN PVV 计算器 tool.

PIN 验证值(PVV)是 VISA 用于在 ATM 和 POS 终端验证 PIN 的方法。本指南解释 PVV 计算过程以及它与 IBM 3624 PIN 偏移量方法的区别。

什么是 PVV?

PVV(PIN 验证值)是从客户 PIN、卡的 PAN 和密钥派生的 4 位密码学值。它存储在磁条上,用于验证 PIN,而无需为每笔交易将实际 PIN 传输到发卡行。

PVV 比 PIN 偏移量 提供更强的安全性,因为验证值本身是密码学派生的,而不仅仅是算术差值。

PVV 计算过程

输入数据

  • PIN:客户的 4-12 位 PIN
  • PAN:主账号(不含校验位)
  • PVK:PIN 验证密钥(3DES 为 16 个十六进制字符)
  • PVKI:PIN 验证密钥索引(0-6,选择使用哪个 PVK)

算法步骤

步骤 1:选择 PVK

PVKI 选择使用哪个 PIN 验证密钥:

PVK = PVK_集[PVKI]

这允许多个 PVK 同时处于活动状态,实现密钥轮换而无需重新发行卡。

步骤 2:准备 PAN

取 PAN 最右边 12 位数字(不含校验位):

PAN_格式化 = PAN[4:16](第 4 到第 15 位,从 0 开始索引)

步骤 3:构造数据块

连接 PAN 和 PIN:

数据块 = PAN_格式化 || PIN[0:4]

使用 PIN 的前 4 位数字。如果 PIN 长于 4 位,PVV 计算仅使用前 4 位。

步骤 4:使用 PVK 加密

使用选定的 PVK 通过 3DES 加密数据块:

加密结果 = 3DES_Encrypt(PVK, 数据块)

步骤 5:提取 PVV

应用十进制化以提取 4 位 PVV:

  1. 取加密结果的每个十六进制数字
  2. 使用十进制化表映射到十进制
  3. 选择前 4 位 0-9 的数字
  4. 跳过十六进制数字 A-F

示例

给定:

  • PIN:1234
  • PAN:4012345678901234(校验位是 4)
  • PVK:0123456789ABCDEF FEDCBA9876543210
  • PVKI:0

步骤 1:格式化 PAN

最右边 12 位:012345678901

步骤 2:构造数据块

数据块 = 012345678901 || 1234 = 0123456789011234

步骤 3:加密

加密结果 = 3DES_Encrypt(PVK, 0123456789011234)
结果:A1B2C3D4E5F6A7B8

步骤 4:十进制化

A→0, 1→1, B→1, 2→2, C→2, 3→3, D→3, 4→4, E→4, 5→5, F→5, 6→6, A→0, 7→7, B→1, 8→8
十进制序列:0112233445560718
前 4 位有效数字:0112

结果:PVV = 0112

PVV 验证过程

当客户在 ATM 输入 PIN 时:

  1. ATM 从磁条读取 PVV 和 PVKI
  2. ATM 将加密的 PIN 块发送到主机
  3. 主机的 HSM 解密 PIN 块
  4. HSM 使用 PVKI 选择 PVK
  5. HSM 使用提交的 PIN、PAN 和 PVK 计算 PVV
  6. HSM 将计算的 PVV 与存储的 PVV 进行比较
  7. 如果匹配,验证成功

HSM 命令流程

1. 从磁道 2 读取 PVV 和 PVKI
2. 解密 PIN 块 → 提取提交的 PIN
3. 使用 PVKI 选择 PVK
4. 构造数据块:PAN_格式化 || PIN[0:4]
5. 3DES_Encrypt(PVK, 数据块)
6. 十进制化 → 计算的 PVV
7. 比较(计算_PVV, 存储_PVV) → 结果

PVKI(PIN 验证密钥索引)

PVKI 是存储在磁条上的单个数字(0-6),指示使用了哪个 PVK:

  • PVKI 0-6:选择最多 7 个活动 PVK 中的一个
  • PVKI 7-9:通常保留用于特殊目的

密钥轮换

PVKI 实现无缝密钥轮换:

  1. 生成新 PVK 并分配给 PVKI=1
  2. 新卡使用 PVKI=1 发行
  3. 使用 PVKI=0 的旧卡继续工作
  4. 最终淘汰 PVKI=0

PVV 存储位置

PVV 存储在磁条的磁道 2 中:

磁道 2:PAN | 有效期 | 服务码 | PVKI + PVV + 其他数据

PVKI 和 PVV 共同占用自由数据字段中的 5 位数字。

安全特性

优势

  1. 密码学验证:PVV 是密码学哈希,不是算术偏移量
  2. 密钥分离:多个 PVK 可以同时处于活动状态
  3. 无明文存储:PVV 不会泄露 PIN
  4. 标准化:支付行业广泛支持

与 PIN 偏移量对比

特性PIN 偏移量PVV
值类型算术差值密码学哈希
密钥使用单个 PDK多个 PVK(通过 PVKI)
安全性中等更高
可逆性如果知道偏移量 + 自然 PIN 可以计算 PIN无法逆向得到 PIN
存储偏移量在磁条上PVV 在磁条上

PVV 在 EMV 世界中

虽然 PVV 是为磁条交易设计的,但它在 EMV 中也很重要:

  • 降级:当芯片读取失败时,使用带有 PVV 的磁条
  • 离线验证:一些 EMV 实现使用 PVV 进行离线 PIN 验证
  • 迁移:卡可能同时具有 EMV 芯片和带有 PVV 的磁条

常见问题

可以从 PVV 计算出 PIN 吗?

不可以。PVV 是单向密码学函数。知道 PVV、PVK 和 PAN 无法恢复 PIN——只能验证提交的 PIN。

如果 PVKI 不存在怎么办?

如果 PVKI 缺失,假设使用默认 PVK(通常是 PVKI=0)。这在旧系统中很常见。

PVV 与 CVV 有什么不同?

CVV 通过验证卡数据来防止卡片欺诈。PVV 通过验证客户的 PIN 来防止 PIN 欺诈。它们使用不同的密钥,服务于不同的目的。

一张卡可以有多个 PVV 吗?

不可以。每张卡只有一个 PIN 对应一个 PVV。如果客户更改 PIN,会计算并存储新的 PVV。

亲自尝试

使用我们的 PVV 工具理解和验证 VISA PIN 验证值方法:

  • PIN PVV 计算器 —— 从 PIN、PAN 和 PVK 计算 PVV,以及使用 PVV 方法验证 PIN

所有处理在您的浏览器本地完成——您的 PVK 不会离开您的设备。

Related Tool
PIN PVV 计算器