DES MAC PIN HEX
/*
void DesEncrypt( UCHAR * auchInput,UCHAR * auchKey,UCHAR * auchOutput=NULL);
Function: DesEncrypt
将64位报文加密
In Parameter: auchInput UCHAR[8] 需做加密的包文
auchKey UCHAR[8] key used for des
Out Parameter: auchOutput UCHAR[8] 加密后的包文
为NULL时,加密的包文放在 auchInput
Return: 无
*/ /*
void DesDecrypt( UCHAR * auchInput,UCHAR * auchKey,UCHAR * auchOutput=NULL);
Function: DesDecrypt
将64位报文解密
In Parameter: auchInput UCHAR[8] 需做解密的包文
auchKey UCHAR[8] key used for des
Out Parameter: auchOutput UCHAR[8] 解密后的包文
为NULL时,解密的包文放在 auchInput
Return: 无
*/ /*
void TripleEncrypt( UCHAR * source,UCHAR * key,UCHAR * dest=NULL);
Function: TripleEncrypt
将64位报文用TripleDes算法加密
In Parameter: source UCHAR[8] 需做加密的包文
key UCHAR[16] key used for TripleDes
Out Parameter: dest UCHAR[8] 加密后的包文
为NULL时,加密的包文放在 source
Return: 无
*/ /*
void TripleDecrypt( UCHAR * source,UCHAR * key,UCHAR * dest=NULL);
Function: TripleDecrypt
将64位报文用TripleDes算法解密
In Parameter: source UCHAR[8] 需做解密的包文
key UCHAR[16] key used for TripleDes
Out Parameter: dest UCHAR[8] 解密后的包文
为NULL时,解密的包文放在 source
Return: 无
*/ /*
long DesEncryptData(UCHAR * pInBuff, long Buflen, UCHAR * pDesKey, UCHAR * pOutBuff=NULL);
Function: DesEncryptData
将通信报文加密,算法:
首先将pInBuff数据分成若干个64位的数据段,最后一个数据段(N)
不足64位的在后面加零补够64位。然后计算密文=DES(DES-KEY,
数据段1)+DES(DES-KEY,数据段2)+ …… DES(DES-KEY,数据段N)
In Parameter: pInBuff UCHAR[Buflen] 需做加密的包文
Buflen long 做加密包文的长度,
pDesKey UCHAR[8] key used for des
Out Parameter: pOutBuff UCHAR[(Buflen-1)/8*8+8] 加密后的包文
为NULL时,加密的包文放在 pInBuff
Return: 密文长度
*/ /*
long DesDecryptData(UCHAR * pInBuff, long Buflen, UCHAR * pDesKey, UCHAR * pOutBuff=NULL);
Function: DesDecryptData
将通信报文解密,算法:
首先将pInBuff数据分成若干个64位的数据段,最后一个数据段(N)
不足64位则报文出错。然后计算明文=UNDES(DES-KEY,
数据段1)+UNDES(DES-KEY,数据段2)+ …… UNDES(DES-KEY,数据段N)
In Parameter: pInBuff UCHAR[Buflen] 需做解密的包文
Buflen long 做解密包文的长度,
pDesKey UCHAR[8] key used for des
Out Parameter: pOutBuff UCHAR[Buflen] 解密后的包文 为NULL时
解密的包文放在 pInBuff
Return: 明文长度,-1出错
*/ /*
void XOR(UCHAR *source, UCHAR *dest,long size);
Function: XOR
将source 与 dest 异或运算,结果存放在dest中
In Parameter: source UCHAR[size] 需做异或的包文
dest UCHAR[size] 需做异或的包文,结果存放在此
size long 做异或包文的长度
Out Parameter: dest UCHAR[size] 结果存放在此
Return: 无
*/ /*
void DSP_2_HEX(UCHAR * dsp, UCHAR * hex,long count);
Function: DSP_2_HEX
dsp data to hex(binary) data
for example: dsp="1A2B3344",count=4,hex={0x1A,0x2B,0x33,0x44};
In Parameter: dsp UCHAR[2*count] dsp data
count long
Out Parameter: hex UCHAR[count] hex data
Return: No return
*/ /*
void HEX_2_DSP(UCHAR * hex, UCHAR * dsp,long count);
Function: HEX_2_DSP
hex(binary) data to dsp data
for example: hex={0x1A,0x2B,0x33,0x44},count=4,dsp="1A2B3344";
In Parameter: hex UCHAR[count] hex data
count long
Out Parameter: dsp UCHAR[2*count+1] dsp data 以null字符结束
Return: No return
*/ /*
void GetBPIMac(UCHAR * pBuff, long Buflen, UCHAR * pMacKey, UCHAR * pMac);
Function: GetBPIMac
得到通信BPI 方式MAC值,算法:
首先将pBuff数据分成若干个64位的数据段,最后一个数据段(N)
不足64位的在后面加零补够64位。然后计算MAC=DES(MAC-KEY,
(((数据段1 XOR 数据段2)XOR 数据段3)…… 数据段N))
如果pMacKey值为NULL,则不做DES,只异或,此时与GetSTDMac函数结果相同
In Parameter: pBuff UCHAR[Buflen] 需做MAC的包文
Buflen long 做MAC包文的长度(不含MAC),
pMacKey UCHAR[8] key used for mac
Out Parameter: pMac UCHAR[8] Mac value
Return: 无
*/ /*
void GetSTDMac(UCHAR * pBuff, long Buflen, UCHAR * pMacKey, UCHAR * pMac);
Function: GetSTDMac
得到通信STAND 方式MAC值,算法:
首先将pBuff数据分成若干个64位的数据段,最后一个数据段(N) 不足64位的
在后面加零补够64位。然后计算MAC=DES(MAC_KEY,…… DES(MAC-KEY,
DES(MAC-KEY,DES(MAC-KEY,数据段1) XOR 数据段2)XOR 数据段3)…… 数据段N)
如果pMacKey值为NULL,则不做DES,只异或,此时与GetBPIMac函数结果相同
In Parameter: pBuff UCHAR[Buflen] 需做MAC的包文
Buflen long 做MAC包文的长度(不含MAC),
pMacKey UCHAR[8] key used for mac
Out Parameter: pMac UCHAR[8] Mac value
Return: 无
*/ /*
void EncryptPin(UCHAR *cardno,UCHAR *pin,UCHAR * PinKey,UCHAR *encrypt_pin);
Function: EncryptPin
密码处理
※ ANSI X9.8密码加密:
1. 将卡号去校验位,取右12位。如5309833221044200,取下画部分,前拼4个0得到CARDNO,结果为:0000983322104420。
2. 将PINPAD输入的密码正文拼接,得06??????FFFFFFFF, 04????FFFFFFFFFF
3. 先将1、2步所得压缩为Hex,再异或得PAN。
4. DES(PIN--BLOCK-KEY ,PAN)结果即为加密后的PIN-BLOCK;
In Parameter: cardno UCHAR 卡号,以null字符结束
pin UCHAR 密码,以null字符结束
PinKey UCHAR[8] key used for des pin
Out Parameter: encrypt_pin UCHAR[8] 加密后的pin值
Return: 无
*/ /*
void DecryptPin(UCHAR *cardno,UCHAR *encrypt_pin,UCHAR * PinKey,UCHAR *pin);
Function: DecryptPin
密码处理
※ ANSI X9.8密码解密:
1. 将卡号去校验位,取右12位。如5309833221044200,取下画部分,前拼4个0得到CARDNO,结果为:0000983322104420。
2. PAN=UNDES(PinKey,encrypt_pin)
3. 先将1步所得压缩为Hex,与PAN异或得PAD。
4. 将PAD作HEX_2_DSP解压缩得PINPAD
5. 根据PINPAD提取密码,如06??????FFFFFFFF,提取06后6个字符为密码, 04????FFFFFFFFFF,提取04后4个字符为密码
In Parameter: cardno UCHAR 卡号,以null字符结束
encrypt_pin UCHAR[8] 加密后的pin值
PinKey UCHAR[8] key used for undes pin
Out Parameter: pin UCHAR 密码,以null字符结束
Return: 无
*/ /*
void GenerateKey(UCHAR * pKey);
Function: GenerateKey
随机生成密钥
In Parameter: 无
Out Parameter: pKey UCHAR[8] 随机生成的密钥
*/
http://files.cnblogs.com/klxll/libdes.zip //动态库
chawor 07/18/03
DES MAC PIN HEX的更多相关文章
- DES算法和MAC算法总结
需要用到的工具类,代码如下: import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; import java. ...
- 使用Reaver加PIN码秒破WPA-PSK密码
之前掌握到的破解WPA-PSK密码仅限于使用aircreack工具包获取handshake后挂字典爆破方式,而能否破解出wpa密码完全依赖于字典强度了.除了该方式外还有一个更有效的办法,就是使用路由P ...
- 无线密码破解----minidwep-gtk的PIN破解方法
使用虚拟机对minidwep-gtk进行PIN破解 用CDLINUX支持8187和3070_30211版.iso系统PJpin码 1.用虚拟机的好处是方便,可以一边破解,一边上网做其他事情. 虚拟机 ...
- 在安卓6.0(及以上)设备上无法获取无线网卡MAC地址的解决方案
在安卓6.0以下的设备上,通过WifiManager.getConnectionInfo().getMacAddress()即可获取WLAN物理地址, 而在6.0及以上,以此方式获取到的MAC地址为固 ...
- wifi reaver
PIN码的格式很简单, 八位十进制数,最后一位(第8位)为校验位(可根据前7位算出),验证时先检测前4位,如果一致则反馈一个信息,所以只需1万次就可完全扫描一遍前4位,前4位确定下来的话,只需再试10 ...
- 著名加密库收集 Encrypt
CryptoAPI 微软的CryptoAPI crypt32.lib,advapi32.lib,cryptui.lib #include <wincrypt.h>#include < ...
- ethereumjs/ethereumjs-wallet
Utilities for handling Ethereum keys ethereumjs-wallet A lightweight wallet implementation. At the m ...
- LVS负载均衡三种模式的实现
何为lvs负载均衡? lvs负载均衡(linux virtual server)又名linux虚拟服务器.由章文嵩博士主导的负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux ...
- win10 服务(系统默认服务)注册表
---恢复内容开始--- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services] ...
随机推荐
- Oracle 触发器的简单命令
-- 创建触发器的基本命令 create or replace trigger td after delete on ss begin dbms_output.put_line('删除成功'); en ...
- sql sp_xml_preparedocument 函数运用实例
表结构: CREATE FUNCTION f_splitSTR( ), --待分拆的字符串 ) --数据分隔符 ))) AS BEGIN --创建分拆处理的辅助表(用户定义函数中只能操作表变量) DE ...
- UE4中使用数据表(Data Table)
本文依据官方文档数据驱动游戏性元素整理而来. 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决.下面我们来简单说一下UE4中 ...
- impdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误
windows平台下,oracle 11.2.0.1在使用impdp向测试环境导入数据的时候,报出如下错误: 错误原因: 数据泵在写日志文件的时候,使用的是数据库字符集.如果客户端的环境变量NLS_L ...
- Dedesql数据库类详解
今天花点时间讲解下织梦的sql数据库类,近期本来是准备录制一套视频教程的,但由于视频压缩的问题迟迟没有开展工作,如果大家有什么好的视频压缩方式可以通过邮件的方式告诉我:tianya#dedecms.c ...
- cocos2dx js 3.2 热更新
COCOS IDE用手机调试更新是正常的,是预想的结果,但用COCOS IDE打包发布APK,安装到手机上,热更新下载图片.JSON UI什么的都能正常更新替换,但JS脚本没有替换,这是为毛.更新文件 ...
- Scrum4.0+5.0
1.题目: 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作 ...
- Android -- 自定义View小Demo,绘制四位数随机码(一)
1,现在有这样一个需求,实现显示随机随机数可能在代码中直接很简单的就实现了,但是现在我们直接自定义View来实现这个效果,那么我们来分析一波吧,我们允许开发者自己设置这个textview的大小,颜色, ...
- HTML5之FileReader的使用
HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使用方式非常简 ...
- tomcat,Jboss,weblogic区别与比较
一.tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心 ...