银行加密算法之——数据打解包
来源:互联网 发布:阿里云服务器如何分区 编辑:程序博客网 时间:2024/05/16 14:34
在银行业务中,我们要对数据进行加密处理,这点事显而易见的,但无论是我们进行软件加密还是硬件加密,都需要对待加密的数据之前需要对数据进行打包处理。在解密数据后,无论是硬件加密还是软件加密都还需要进行相应的解包处理。这样才能得到我们想要的正确数据,在接下来的文章内将主要介绍打解包的处理和程序示例。
这其实就是一个将字符串数据转换成16进制数的问题,首先是打包(PACK),将如字符串"1234567FE" 转换成十六进制数0x12 0x34 0x56 0xE0等,因为字符串的长度是9程序会自动成偶数。尤其是在硬件加密方面,密码键盘是无法识别字符串的。在此过程中数据的长度会变为原来的一半,这是因为他会将原来的两位字符组成一个新的十六进制数,在字符串不足偶数时会在后面自动补0,由此转换为的数据就可以用来异或,活着Des,3Des操作。
以下是函数的实现过程
int Pack( unsigned char *pbyInBuffer, unsigned char *pbyOutBuffer, int iInBuffLen )
{
unsigned char n;
int iLen,i;
/*
** whether InBuffer data's len can be divided by 2
*/
if(iInBuffLen%2)
iLen=iInBuffLen+1;
else
iLen=iInBuffLen;
for (i=0; i<iInBuffLen; i++)
{
pbyInBuffer[i]=(unsigned char) toupper(pbyInBuffer[i]);
if (i%2!=0) /* if odd number */
{
n =(unsigned char) (pbyInBuffer[i] - 0x30);
/*
** Note: 'A' = 65, 'F'= 70. 65-48 = 17, 17-7=10.
** For example, this will convert 'A' to value 10.
*/
if (n>9)
n = n-7;
pbyOutBuffer[i/2] = pbyOutBuffer[i/2] | n;
}
else
{
pbyOutBuffer[i/2] = ( (n=pbyInBuffer[i]-0x30)>9 ? n-7:n ) << 4;
}
}
return(iLen/2);
}
以上函数中*pbyInBuffer为传入参数,需要压缩数据的指针形如字符串"1234567FE" 。
*pbyOutBuffer 为传出参数,压缩完数据的指针形如十六进制数0x12 0x34 0x56 0xE0
iInBuffLen 为传入参数,需要压缩数据的长度
当数据从密码键盘等解密传出后,我们同样需要对数据进行解密,这样解包操作。过程就是将上面的操作反过来形如输入数据为: 0x12 0x34 0x56 0x7F 0xE0 ,输入长度为5,输出的字符串为 "1234567fe0"。解包后的数据长度为原长度的2倍。
int Unpack( unsigned char *pbyInBuffer, unsigned char *pbyOutBuffer, int iInBufLen )
{
int i,j;
for (i=0,j=0; j<iInBufLen; j++, i=i+2)
{
if ( (pbyInBuffer[j]/16)>9 )
pbyOutBuffer[i] = (pbyInBuffer[j]/16)+'0'+7;
else
pbyOutBuffer[i] = (pbyInBuffer[j]/16)+'0';
if ( (pbyInBuffer[j]%16)>9 )
pbyOutBuffer[i+1] = (pbyInBuffer[j]%16)+'0'+7;
else
pbyOutBuffer[i+1] = (pbyInBuffer[j]%16)+'0';
}
return(0);
}
以上函数中*pbyInBuffer为传入参数,需要解压数据的指针形如十六进制数0x12 0x34 0x56 0xE0。
*pbyOutBuffer 为传出参数,解压完数据的指针形如字符串"1234567FE"
iInBuffLen 为传入参数,需要解压数据的长度
- 银行加密算法之——数据打解包
- .NET 与安全性—— 数据加密算法
- 商业银行加密算法之——DES加密
- IOS开发基础之—MD5加密算法
- IOS开发基础之—MD5加密算法
- 银行常用加密算法PINBlock加密
- 银行常用加密算法PINBlock加密
- Android数据加密之异或加密算法
- Android数据加密之异或加密算法
- Android数据加密之异或加密算法
- 金融科技&大数据产品推荐:票据贷——到期银行承兑,安全稳健之选
- 数据银行
- 数据银行
- 银行数据
- .NET 与安全性(1)——— 数据加密算法
- .NET 与安全性(1)——— 数据加密算法
- .NET 与安全性(1)——— 数据加密算法
- .NET 与安全性(1)——— 数据加密算法
- <ActionScript 3 Bible 2nd>读书笔记(21,27,29)
- 解决/usr/bin/ld: cannot find -lxxx
- 整型反转 如-123反转成-321
- cocos2d-x 内存回收机制
- 乐元素CTO凌聪访谈:游戏引擎技术选型之王道
- 银行加密算法之——数据打解包
- cocos2d-x CCRenderTexture
- 黑马程序员_字符串的处理(一)
- STM32 + RT Thread OS 学习笔记[一]
- cocos2d-x 获取屏幕当前方向和系统语言
- java解压rar.zip
- cocos2d-x cocosBuilder
- cocos2d-x 物理引擎box2d
- 大学生活随想