HSM KitHSM 工具箱
中文

CVV/CVC 计算方法详解

支付安全# CVV# CVC# 卡片安全# EMV
最后更新: 2026年1月12日3 分钟阅读By HSM Kit Team
现在需要计算吗?
使用我们免费的在线 CVV 计算器 工具。

卡验证值 (CVV) 和卡验证码 (CVC) 是防止卡片欺诈的安全功能。本指南解释它们是如何通过加密方式生成的。

卡验证值的类型

CVV1(磁条)

  • 编码在磁条上(磁道 1 和磁道 2)
  • 用于"有卡"的现场交易
  • 3 位数字

CVV2/CVC2(印刷)

  • 印在卡上(Visa/MC 在背面,Amex 在正面)
  • 用于"无卡"交易(在线/电话)
  • 3 位数字(Visa/MC)或 4 位数字(Amex)

iCVV(集成电路)

  • 存储在芯片中
  • 与 CVV1 不同,以防止盗刷攻击
  • 用于验证芯片存在

动态 CVV/CVC3

  • 由非接触式/芯片每次交易生成
  • 不断变化以增加安全性

CVV 计算过程

输入数据

  1. 主账号 (PAN):16 位卡号
  2. 有效期:MMYY 或 YYMM 格式
  3. 服务代码:3 位数字(如 101、201)
  4. CVK A 和 CVK B:卡验证密钥(各 16 个十六进制字符)

算法步骤

步骤 1:准备数据块

连接 PAN(右对齐)+ 有效期 + 服务代码,填充到 32 个十六进制:

块 A:PAN[12位] + 有效期[4位] + 服务代码[3位] + 填充
块 B:剩余 PAN 数字 + 填充

步骤 2:加密块 A

加密_A = 3DES_Encrypt(CVK_A, 块_A)

步骤 3:与块 B 进行 XOR

XOR结果 = 加密_A XOR 块_B

步骤 4:再次加密

加密_B = 3DES_Encrypt(CVK_A, XOR结果)

步骤 5:十进制化

从结果中提取数字:

  1. 将十六进制字符 0-9 作为数字
  2. 对于 A-F,减去 10 得到 0-5
  3. 取前 3 位(Amex 取 4 位)数字

示例

给定:

  • PAN:4012345678901234
  • 有效期:2512(2025年12月)
  • 服务代码:101
  • CVK:0123456789ABCDEF FEDCBA9876543210

结果:CVV = 123(示例)

CVV2 与 CVV1 的区别

属性CVV1CVV2
位置磁条印在卡上
服务代码101000
用途有卡交易无卡交易
可被盗刷否(不在磁条上)

安全特性

  1. 单向函数:无法从 CVV 反向工程出 CVK
  2. 密钥依赖性:不同的 CVK 产生不同的 CVV
  3. 输入敏感性:PAN/有效期的任何变化都会改变 CVV

为什么动态 CVV 很重要

传统 CVV 是静态的 - 一旦被盗,可以重复使用。动态 CVV (CVC3) 使用以下信息在每次交易时变化:

  • 应用交易计数器 (ATC)
  • 不可预测数 (UN)
  • 卡片特定密钥(从 IMK 派生)

这使得被盗的值对未来交易毫无用处。

自己动手试试

使用我们的 CVV 计算器:

  • 计算 CVV/CVV2/iCVV
  • 验证现有的 CVV 值
  • 了解逐步过程
  • 使用示例数据测试
相关工具
CVV 计算器