Files
interactive/application/sp-console3/Common/Crypt.cpp
T
2026-08-07 17:38:18 +09:00

68 lines
1.4 KiB
C++

// 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;
}