卡磁道CVV的那些事

一、定义
卡校验值(CVV)提供对磁条内容加密校验以防止非法修改或非法仿制磁条内容的一种算法。加密算法采用美国国家安全部的des算法。
二、卡校验值(CVV)的产生和校验

两个64bit称为CVKA和CVKB的卡校验密钥,用于产生和校验磁道二中的卡校验值CVV。
在生成和使用工作密钥时,注意以下几点:
发卡行不能使用银行密钥(pinkey)作为工作密钥;
每一个发卡行使用不同的工作密钥;
工作密钥应以加密方式存放在主机系统中,假如工作密钥泄露,要求立即更新工作密钥,该发卡行所发行的卡必须重发;

以第一个十六位主账号为例,计算卡校验值的步骤如下: 
主账号:4123456789012345
失效日期:8701
服务代码:101

CVKA
0123456789ABCDEF

CVKB
FEDCBA9876543210

步骤1:抽取数据
source_data_s1
41234567890123458701101

步骤2: 数据块拆分
块1:
source_data_left_s2
4123456789012345
块2:
source_data_right_s2
8701101000000000

步骤3:用CVKA加密对块1  source_data_left_s2

source_data_left_en_s3
B76ADDCE71CCC6BE

步骤4:
4.1 用块2 source_data_right_s2 异或步骤3 source_data_left_en_s3的结果

xor_s4
306BCDDE71CCC6BE

4.2 CVKA对异或结果xor_s4加密

xor_s4_en
A51046A259A4C467

步骤5:
用CVKB对步骤4的结果xor_s4_en解密

xor_s4_en_de_s5
90F6DB02A6F7E621

步骤6:用CVKA对步骤5的结果xor_s4_en_de_s5加密

xor_s4_en_de_s5_en_s6
5B614982E03C97DD

步骤7:对步骤6的结果抽取数字

s6_num7
56149820397

步骤8:对步骤6的结果抽取十六进制字 抽取结果
s6_hex7
BECDD

每个十六进制减去A
s6_hex7_dh
14233

步骤9:将步骤8的结果排列在步骤7的后面

s9_mix_s7_s8
5614982039714233

步骤10:步骤9的结果前三位数字为
CVV
561

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Narutolxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值