frankyara 2016-03-16 03:23 采纳率: 0%
浏览 1775
已采纳

帮我看下这个程序的加密解密过程,python;详细点

-*- coding: utf-8 -*-

import datetime
import logging
from ctypes import *
import socket
from xml.dom import minidom

logger=logging.getLogger(__name__)

class BankTrader(object):
TRANSACT_TYPE_IC='icCard'
TRANSACT_TYPE_STRIP='stripCard'

# 参数全部为字符串,不能是unicode
def __init__(self,host,port,regionId,terminalID,atmNumber):
    self.logger=logger
    # 装载加密、解密方法
    self.fdesdll=cdll.LoadLibrary("fdes.dll")
    self.fdesdll.nEncrptPkg.restype=c_int
    self.fdesdll.nEncrptPkg.argtypes=[c_char_p,c_char_p,c_char_p,POINTER(c_int)]
    self.fdesdll.nDeEncrpt.restype=c_int
    self.fdesdll.nDeEncrpt.argtypes=[c_char_p,c_char_p,c_char_p,POINTER(c_int)]
    self.host=host
    self.port=port
    self.regionId=regionId
    self.terminalID=terminalID
    self.atmNumber=atmNumber
    # 密钥明文,必须为字符串,默认为='1234567887654321'
    self.encrptionKey='1234567887654321'
    # 银行卡BIN号
    self.bank_bins=[]
    # 最近查询的帐户余额
    self.lastBalance=''

# separator='0x',0x010x020x03
# separator=' ',01 02 03
# separator='',010203
def str2hex(self,value,separator='0x'):
    v='0x'.join(n.encode('hex') for n in value)
    v='0x'+v
    if separator=='':
        a=v.split('0x')
        v=''.join(n for n in a[1:])
        return v
    elif separator==' ':
        a=v.split('0x')
        v=' '.join(n for n in a[1:])
        return v
    else:
        return v

# 加密,参数全部为字符串,不能是unicode
def encrpt(self,source):
    acheadbody=source
    # 保证加密内容的长度为8的倍数
    for n in range(8-(len(acheadbody)%8)):
        acheadbody=acheadbody+' '
    acRadKey=self.encrptionKey
    acencheadbody=create_string_buffer(1024*5)
    packlen=c_int(len(acheadbody))
    success=(self.fdesdll.nEncrptPkg(acheadbody,acencheadbody,acRadKey,byref(packlen))==0)
    value=acencheadbody.raw[:packlen.value]
    return success,value
  • 写回答

2条回答 默认 最新

  • oyljerry 2016-03-16 11:24
    关注

    主要就是加载dll。然后调用dll的函数。传递对应的参数数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大