📄 wrapper.c
字号:
#include <Python.h>
#include "s60crypt.h"
static PyObject* pycrypt_simplecrypt(PyObject* self, PyObject* args)
{
char* data;
int datalen;
char* key;
int keylen;
char* out;
int i;
PyObject* result;
if (!PyArg_ParseTuple(args, "s#s#", &data, &datalen, &key, &keylen))
return NULL;
out = (char*)malloc(datalen);
if (!out)
return PyErr_NoMemory();
for(i=0; i<datalen; ++i)
out[i] = data[i] ^ key[i % keylen];
result = Py_BuildValue("s#", out, datalen);
free(out);
if (!result)
return PyErr_NoMemory();
return result;
}
static PyObject* pycrypt_encrypt(PyObject* self, PyObject* args)
{
char* data;
int datalen;
char* pw;
int pwlen;
char* out;
PyObject* result;
if (!PyArg_ParseTuple(args, "s#s#", &data, &datalen, &pw, &pwlen))
return NULL;
out = (char*)malloc(datalen);
if (!out)
return PyErr_NoMemory();
s60_encrypt(datalen, data, out, pw, pwlen);
result = Py_BuildValue("s#", out, datalen);
free(out);
if (!result)
return PyErr_NoMemory();
return result;
}
static PyObject* pycrypt_decrypt(PyObject* self, PyObject* args)
{
char* data;
int datalen;
char* pw;
int pwlen;
char* out;
PyObject* result;
if (!PyArg_ParseTuple(args, "s#s#", &data, &datalen, &pw, &pwlen))
return NULL;
out = (char*)malloc(datalen);
if (!out)
return PyErr_NoMemory();
s60_decrypt(datalen, data, out, pw, pwlen);
result = Py_BuildValue("s#", out, datalen);
free(out);
if (!result)
return PyErr_NoMemory();
return result;
}
static const PyMethodDef PyCryptMethods[] =
{
{"simplecrypt", pycrypt_simplecrypt, METH_VARARGS},
{"encrypt", pycrypt_encrypt, METH_VARARGS},
{"decrypt", pycrypt_decrypt, METH_VARARGS},
{NULL, NULL}
};
DL_EXPORT(void) initpycrypt(void)
{
(void)Py_InitModule("pycrypt", PyCryptMethods);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -