三代卡读卡解密方法

🛖 概述

和第一代、第二代社保卡不同,第三代社保卡的持卡人信息(EF06)是加密的,需要做外部认证才可以读取到。

🚲 分析

需要在在读取EF06中的数据前,做社保卡的外部认证。

🚙 处理

  1. 读取卡片基本验证信息
    110000|0081544C9786841100800009F5|03|110000D15600000500069BA4CE2212FE|1C3F8B47D6DF6A4D|A61F5F464E88C6C3|B02F4C6F5BE9EC01|56E3BCBC839D67A0|
    
    发卡地区行政区划代码(卡识别码前 6 位)		110000
    卡复位信息(仅取历史字节)		0081544C9786841100800009F5
    算法标识                        3
    卡识别码						110000D15600000500069BA4CE2212FE
    内部认证过程因子                1C3F8B47D6DF6A4D
    内部认证鉴别所需的原始信息       A61F5F464E88C6C3
    外部认证过程因子                B02F4C6F5BE9EC01
    外部认证鉴别所需的原始信息       56E3BCBC839D67A0
    
  2. 计算过内部认证密钥

    使用PSAM卡进行密钥分散,计算外部认证密钥。

    "00A404000F7378332E73682EC9E7BBE1B1A3D5CF"
    "00A4000002DF01"
    "BFDE670828" & sKeyBaseDate & sInterAuthKey & "0000000000000000"
    "80FA000010" & sInterAuthData & "0000000000000000"

  3. 计算过外部认证密钥

    使用PSAM卡计算

    "BFDE670A28" & sKeyBaseDate & sExtAuthKey & "0000000000000000"
    "80FA000010" & sExtAuthData & "0000000000000000"

🚚 例子

认证原始数据:

{
  "AuthInfo":"110000|0081544C9786841100800009F5|03|110000D15600000500069BA4CE2212FE|1C3F8B47D6DF6A4D|A61F5F464E88C6C3|B02F4C6F5BE9EC01|56E3BCBC839D67A0|"
}

认证后密钥信息:

{
  "Status":0,
  "Message":"成功",
  "Data":"06112A082A26BE11A61F5F464E88C6C3|FC7C1AA9BA0FD55C56E3BCBC839D67A0|"
}