密码软加密

来源:互联网 发布:只读文件数据怎么修改 编辑:程序博客网 时间:2024/06/16 00:05
/*EXEC SQL include "mud.h";*/#include "pberrlog.h"long sc_decrypt(); long sc_encry();long sc_decrypt_2();long sc_encry_2();long ScUnpack();long ScPack();long sc_str2hex();long sc_hex2str();long ChkCstmPwd();long GetCstmEncPwd();long GetCstmPwd();long CrtCstmPwd();long BackCstmPwd();longScUnpack(bit, block, blockLen)unsigned char bit[65];      /* bit array */ unsigned char block[9];     /* byte array */unsigned long blockLen;      /* length of byte array */{    unsigned long  i, j;    unsigned char t;    for (i = 0; i < blockLen; i++) {        t = block[i];        for (j = 0; j < 8; j++)            bit[8 * i + j] = (unsigned char)((t >> (7 - j)) & 1);    }    return 0;}   longScPack(block, bit, blockLen)unsigned char block[9];       /* byte array */unsigned char bit[65];        /* bit array */unsigned long blockLen;        /* length of byte array */{           unsigned long i, j;    unsigned char t;        for (i = 0; i < blockLen; i++) {        t = 0;        for (j = 0; j < 8; j++)            t |= bit[8 * i + j] << (7 - j);        block[i] = t;    }    return 0;}       longsc_str2hex( str, hex )unsigned char   *str;unsigned char   *hex;{    long    i;    memset(hex, 0, sizeof(hex));    sprintf((char *)hex, "%02X%02X%02X%02X%02X%02X%02X%02X",                    str[0], str[1], str[2], str[3],                    str[4], str[5], str[6], str[7]);    hex[16] = 0;    return 0;}longsc_hex2str( hex, str )unsigned char   *hex;unsigned char   *str;{    unsigned int    i, i_char;    char    tmp[2+1];    memset(str, 0, sizeof(str));    tmp[2] = 0;    for ( i = 0; i < 8; i++)    {        tmp[0] = hex[i*2];        tmp[1] = hex[i*2+1];        sscanf(tmp, "%x", &i_char);        str[i] = i_char;    }    str[8] = 0;    return 0;}longsc_encry (tlr_no, original, result)char tlr_no[7];unsigned char original[9];unsigned char result[17];{    char trankey_bcd[65];    char PC_TRANKEY[17];    unsigned char bkey[65],boriginal[65],bmtext[65];    long i;    memset( boriginal,0x00, sizeof( boriginal ) );    memset( bmtext,0x00, sizeof( bmtext ) );    ScUnpack( boriginal, original, 8 );    memset( PC_TRANKEY, 0x00, sizeof( PC_TRANKEY ) );    memset( trankey_bcd, 0x00, sizeof( trankey_bcd ) );    dis_tran_key(tlr_no,PC_TRANKEY);    card_change(PC_TRANKEY,trankey_bcd);        for ( i =0 ; i < 64 ; i++) {        trankey_bcd[i]-='0';    }        /* bit key(bkey) & bit text(btext) ---> bit encry text(bmtext) */    DES_CBS( trankey_bcd, boriginal, bmtext );        ScPack( original, bmtext, 8);    original[8] = '\0';    sc_str2hex( original, result );    return 0;   }longsc_decrypt(tlr_no, mpwd, result)char tlr_no[7];unsigned char mpwd[17];unsigned char result[9];{    unsigned char btext[65],bcipher[65],bkey[65];    unsigned char cipher[9];    char trankey_bcd[65];    char PC_TRANKEY[17];            unsigned long i,j,k;        memset( btext,       0, sizeof(btext));    memset( bcipher,     0, sizeof(bcipher));    memset( bkey,        0, sizeof(bkey));    memset( cipher,      0, sizeof(cipher));    memset( PC_TRANKEY,  0, sizeof(PC_TRANKEY));    memset( trankey_bcd, 0, sizeof(trankey_bcd));    cipher[8] = bcipher[64] = btext[64] = bkey[64] = '\0';      sc_hex2str( mpwd, cipher );    /*?? byte->bit */    ScUnpack( bcipher, cipher, 8 );        dis_tran_key(tlr_no, PC_TRANKEY);    card_change(PC_TRANKEY,trankey_bcd);    for ( i =0 ; i < 64 ; i++) {        trankey_bcd[i]-='0';    }    /* bit key(bkey1) & bit text(btext) ---> bit encry text(bmtext) */    _DES_CBS( trankey_bcd, bcipher, btext );    for ( i = 0; i< 64; i ++ )    for ( i = 0; i< 64; i ++ )    ScPack( result, btext, 8 );    result[8] = '\0';    return 0;}longGetCstmEncPwd(encrypwd, pwd)char *encrypwd;char *pwd;{    char or_pwd[7];    memset(or_pwd, 0, sizeof(or_pwd));    if ( GetCstmPwd(encrypwd, or_pwd) )        return(-1);    WriteLog ( DEBUG_LVL0, "cstmpwd=[%s][%s]\n", encrypwd, or_pwd);    if ( ComPmm(or_pwd, pwd) )        return(-1);/* modify by ty 20100125 for CZYH    if ( SC6000_3Des(1, or_pwd, pwd) )        return(-1);*/    /*    CBSNewLog(2, "cstmpwd", "cstmpwd=[%s][%s]\n", pwd, or_pwd);    */    return(0);}longChkCstmPwd(encrypwd, pwd)char *encrypwd;char *pwd;{    char    or_pwd[17];    memset(or_pwd, 0, sizeof(or_pwd));    if(strlen(encrypwd)>6)    {        if ( GetCstmEncPwd(encrypwd, or_pwd) )            return(-1);    }    else    {       strcpy(or_pwd,encrypwd);    }    return(strcmp(pwd,or_pwd));}       longCrtCstmPwd(or_pwd, pwd)char *or_pwd; char *pwd; {    /*    CBSNewLog(2, "cstmpwd", "cstmpwd=[%s]\n", or_pwd);    *//*    if ( SC6000_3Des(1, or_pwd, pwd) )        return(-1);*/      if ( ComPmm(or_pwd, pwd) )        return(-1);    return(0);}       longsc_encry_2 (original, result)unsigned char original[9];unsigned char result[17];{       char trankey_bcd[65];    char PC_TRANKEY[17];    unsigned char bkey[65],boriginal[65],bmtext[65];    long i;        memset( boriginal,0x00, sizeof( boriginal ) );    memset( bmtext,0x00, sizeof( bmtext ) );    ScUnpack( boriginal, original, 8 );    memset( PC_TRANKEY, 0x00, sizeof( PC_TRANKEY ) );    memset( trankey_bcd, 0x00, sizeof( trankey_bcd ) );    strcpy( PC_TRANKEY, "1234567890987654");    card_change(PC_TRANKEY,trankey_bcd);    for ( i =0 ; i < 64 ; i++) {        trankey_bcd[i]-='0';    }        /* bit key(bkey) & bit text(btext) ---> bit encry text(bmtext) */    DES_CBS( trankey_bcd, boriginal, bmtext );        ScPack( original, bmtext, 8);    original[8] = '\0';        sc_str2hex( original, result );        return 0;}   longsc_decrypt_2(mpwd, result)unsigned char mpwd[17];unsigned char result[9];{    unsigned char btext[65],bcipher[65],bkey[65];    unsigned char cipher[9];    char trankey_bcd[65];    char PC_TRANKEY[17];    unsigned long i,j,k;    memset( btext,       0, sizeof(btext));    memset( bcipher,     0, sizeof(bcipher));    memset( bkey,        0, sizeof(bkey));    memset( cipher,      0, sizeof(cipher));    memset( PC_TRANKEY,  0, sizeof(PC_TRANKEY));    memset( trankey_bcd, 0, sizeof(trankey_bcd));    cipher[8] = bcipher[64] = btext[64] = bkey[64] = '\0';    sc_hex2str( mpwd, cipher );    /*?? byte->bit */    ScUnpack( bcipher, cipher, 8 );    strcpy( PC_TRANKEY, "1234567890987654");    card_change(PC_TRANKEY,trankey_bcd);    for ( i =0 ; i < 64 ; i++) {        trankey_bcd[i]-='0';    }    /* bit key(bkey1) & bit text(btext) ---> bit encry text(bmtext) */    _DES_CBS( trankey_bcd, bcipher, btext );    for ( i = 0; i< 64; i ++ )    for ( i = 0; i< 64; i ++ )    ScPack( result, btext, 8 );    result[8] = '\0';    return 0;}/*设置空函数 编译用*/intSC6000_3Des(int type,char *old_pwd,char *des_pwd){     return(0);}

0 0
原创粉丝点击