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

问题描述

帮我看下这个程序的加密解密过程,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

解决方案

前面是把16进制的字符串转化为对应的字节数据,后面调用fdes.dll加密,看字面理解,是des加密。

解决方案二:

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

时间: 2024-12-06 00:44:28

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

哪位高手帮我看下,这是何种加密方式?

问题描述 <Security><id>B1-E6-05-AA-7E-97-F3-E4-37-45-94-94-D2-60-83-F7</id><id>B2-98-BB-90-D4-CE-B2-47-25-CF-1F-39-E4-1D-DD-2D</id><id>82-56-31-5F-DE-EE-5F-E6</id><id>86-CA-39-E7-6A-0E-EC-9A-49-DC-AD-F1-86-A6-46

能帮我看下这个程序为什么无限循环

问题描述 #include<string>#include<fstream>#include<sstream>#include<iostream>usingnamespacestd;structtagFileInfo{stringfilename;stringvirusname;};stringreadstring(){ifstreaminfilef("first.txt",ios::in|ios::binary);ostringstre

谁帮我看下这个程序为什么无限循环

问题描述 #include<string>#include<fstream>#include<sstream>#include<iostream>usingnamespacestd;structtagFileInfo{stringfilename;stringvirusname;};stringreadstring(){ifstreaminfilef("first.txt",ios::in|ios::binary);ostringstre

解密-关于RSA非对称加密的问题。请各位大神帮我看下以下问题,新人求助。。。感激不尽

问题描述 关于RSA非对称加密的问题.请各位大神帮我看下以下问题,新人求助...感激不尽 关于RSA非对称加密的问题.编程语言采用的是C++ 现在需要设计一个用来加密解密程序.里面包含两个接口,一个是加密,一个是解密. rsa 对称加密是公钥和私钥进行加密,接口设计如下: int EncodeRSA(unsigned char pub_key,unsigned int pass_len, unsigned char data,unsigned int data_len,unsigned char

c++-我调用opencv中的函数计算出的hu矩没有旋转、缩放不变性,请大家帮我看下程序哪出问题了。

问题描述 我调用opencv中的函数计算出的hu矩没有旋转.缩放不变性,请大家帮我看下程序哪出问题了. #include #include #include using namespace std; using namespace cv; int main(int argc, char *argv[]) {//读入图片预处理 Mat image=imread("F:vs2010 project21.jpg"); //image.create(480, 640, CV_8UC1); na

python 大神帮我看下程序,怎么前边时间加载错误

问题描述 python 大神帮我看下程序,怎么前边时间加载错误 解决方案 你其实可以直接判断在不在unique_quchong中后,如果不在,直接把当前行一整行写入文件就可以了.

keytool-ssl的大神帮我看下这个问题吧

问题描述 ssl的大神帮我看下这个问题吧 公司的有一个服务器 一个客户端通过ssl加密连接,服务器是C写的,现在又用java写了一个,把C的放弃,由于客户端都在外面,所以客户端的证书没有办法修改(客户端有一个truststore文件),我现在从C的服务器上拿到了两个pem 文件(ca.pem,server.pem),这应该是用openssl生成的,我用keytool生成的keystore文件,在tomcat下的server.xml 里面配置下keystoreFile就可以使用了,我把这两个文件路

懂webservice和ssl的大神帮我看下这个问题吧,谢谢

问题描述 懂webservice和ssl的大神帮我看下这个问题吧,谢谢 ssl单向认证,1.浏览器访问的时候不需要客户端证书,客户端访问webservice时 则需要一个客户端信任列表文件(client.truststore).浏览器访问时 是自动获取的这个证书 还是浏览器有什么特殊机制? 2.client.truststore这个信任证书是由一个服务器证书导入并生成的,能不能再导入其他的服务器证书? 解决方案 浏览器会告诉你 这个证书不安全,但是程序访问的时候会报错,因为代码默认实现的是验证证

图片-谁能帮我看下这段代码什么意思?他有说过是配置文件,不过我没懂

问题描述 谁能帮我看下这段代码什么意思?他有说过是配置文件,不过我没懂 解决方案 就是一般的配置文件呀,用来程序动态读取数据的,数据维护简单方便,可以用来存储一些不太重要的数据, 具体实现可以用java,c#等等,相关java类有,XmlDocument,XmlElement 解决方案二: 存数据的文件,类似数组.json:只不过规则不同,不是key value了