base
This commit is contained in:
+73
@@ -0,0 +1,73 @@
|
||||
/* internal.h
|
||||
|
||||
Internal definitions used by Expat. This is not needed to compile
|
||||
client code.
|
||||
|
||||
The following calling convention macros are defined for frequently
|
||||
called functions:
|
||||
|
||||
FASTCALL - Used for those internal functions that have a simple
|
||||
body and a low number of arguments and local variables.
|
||||
|
||||
PTRCALL - Used for functions called though function pointers.
|
||||
|
||||
PTRFASTCALL - Like PTRCALL, but for low number of arguments.
|
||||
|
||||
inline - Used for selected internal functions for which inlining
|
||||
may improve performance on some platforms.
|
||||
|
||||
Note: Use of these macros is based on judgement, not hard rules,
|
||||
and therefore subject to change.
|
||||
*/
|
||||
|
||||
#if defined(__GNUC__) && defined(__i386__)
|
||||
/* We'll use this version by default only where we know it helps.
|
||||
|
||||
regparm() generates warnings on Solaris boxes. See SF bug #692878.
|
||||
|
||||
Instability reported with egcs on a RedHat Linux 7.3.
|
||||
Let's comment out:
|
||||
#define FASTCALL __attribute__((stdcall, regparm(3)))
|
||||
and let's try this:
|
||||
*/
|
||||
#define FASTCALL __attribute__((regparm(3)))
|
||||
#define PTRFASTCALL __attribute__((regparm(3)))
|
||||
#endif
|
||||
|
||||
/* Using __fastcall seems to have an unexpected negative effect under
|
||||
MS VC++, especially for function pointers, so we won't use it for
|
||||
now on that platform. It may be reconsidered for a future release
|
||||
if it can be made more effective.
|
||||
Likely reason: __fastcall on Windows is like stdcall, therefore
|
||||
the compiler cannot perform stack optimizations for call clusters.
|
||||
*/
|
||||
|
||||
/* Make sure all of these are defined if they aren't already. */
|
||||
|
||||
#ifndef FASTCALL
|
||||
#define FASTCALL
|
||||
#endif
|
||||
|
||||
#ifndef PTRCALL
|
||||
#define PTRCALL
|
||||
#endif
|
||||
|
||||
#ifndef PTRFASTCALL
|
||||
#define PTRFASTCALL
|
||||
#endif
|
||||
|
||||
#ifndef XML_MIN_SIZE
|
||||
#if !defined(__cplusplus) && !defined(inline)
|
||||
#ifdef __GNUC__
|
||||
#define inline __inline
|
||||
#endif /* __GNUC__ */
|
||||
#endif
|
||||
#endif /* XML_MIN_SIZE */
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define inline inline
|
||||
#else
|
||||
#ifndef inline
|
||||
#define inline
|
||||
#endif
|
||||
#endif
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
#define E_ECHO 010
|
||||
#define ROTORSZ 256
|
||||
#define MASK 0377
|
||||
|
||||
typedef struct crypt_key {
|
||||
char t1[ROTORSZ];
|
||||
char t2[ROTORSZ];
|
||||
char t3[ROTORSZ];
|
||||
char deck[ROTORSZ];
|
||||
char cbuf[13];
|
||||
int n1, n2, nr1, nr2;
|
||||
} CRYPT_KEY;
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
// Crypt.h
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "crypt.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[]=__FILE__;
|
||||
#define new DEBUG_NEW
|
||||
#endif
|
||||
|
||||
char* CCrypt::m_pszKey = "SPConsole1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
CString CCrypt::Encrypt(CString sString)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
int nKeyLen = (int)strlen(m_pszKey);
|
||||
int iPos = (int)sString.GetLength() % nKeyLen;
|
||||
|
||||
CString sRet;
|
||||
|
||||
LPCSTR pszAscii = T2CA(sString);
|
||||
for (unsigned int i = 0;i < strlen(pszAscii); i++) {
|
||||
CString sTemp = sRet;
|
||||
sRet.Format(_T("%s%03d"), sTemp, (unsigned char)pszAscii[i] ^ m_pszKey[(i + iPos) % nKeyLen]);
|
||||
}
|
||||
|
||||
return sRet;
|
||||
}
|
||||
|
||||
CString CCrypt::Decrypt(CString sString)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
LPCSTR pszAscii = T2CA(sString);
|
||||
|
||||
int nKeyLen = (int)strlen(m_pszKey);
|
||||
int iPos = ((int)strlen(pszAscii) / 3) % nKeyLen;
|
||||
|
||||
CString sRet;
|
||||
|
||||
TCHAR szTemp[2];
|
||||
szTemp[1] = 0;
|
||||
for (unsigned int i = 0; i < strlen(pszAscii) / 3; i++) {
|
||||
int nDigit, nNumber = 0;
|
||||
|
||||
nDigit = pszAscii[i * 3];
|
||||
if (nDigit < '0' || nDigit > '9')
|
||||
return _T("");
|
||||
nNumber += (nDigit - '0') * 100;
|
||||
nDigit = pszAscii[i * 3 + 1];
|
||||
if (nDigit < '0' || nDigit > '9')
|
||||
return _T("");
|
||||
nNumber += (nDigit - '0') * 10;
|
||||
nDigit = pszAscii[i * 3 + 2];
|
||||
if (nDigit < '0' || nDigit > '9')
|
||||
return _T("");
|
||||
nNumber += nDigit - '0';
|
||||
|
||||
szTemp[0] = nNumber ^ m_pszKey[(i + iPos) % nKeyLen];
|
||||
sRet += szTemp;
|
||||
}
|
||||
|
||||
return sRet;
|
||||
}
|
||||
Reference in New Issue
Block a user