📄 1114.cpp
字号:
// 1114.cpp : Defines the entry point for the console application.
//
// 要么 #include <iostream.h> 要么就#include <iostream> 再加上using namespace std; 这是两个库
// <afx.h>要放在<iostream>的上面,------非常重要
#include "stdafx.h"
#include <afx.h>
#include <iostream>
using namespace std;
#define MAX_LENTH 2048
//int a[10] = {98,102,109,96,99,112,93,106,100,101};
int a[10] = {78,112,78,111,112,112,78,112,112,112};
char* Encrypt(char* originalstr,char *outputstr);
char* Decrypt(char* originalstr,char *outputstr);
int main(int argc, char* argv[])
{
CString strPassWord;
strPassWord = "";
char szPassWord[MAX_LENTH];
char szOutputstr[MAX_LENTH];
while (TRUE)
{
cout<< "Enter a word "<< endl;
cin.getline(szPassWord,sizeof(szPassWord));
if (strcmp(szPassWord,"")==0)
{
break;
}
// cout<<szPassWord<<endl;
Encrypt(szPassWord,szOutputstr);
cout<<szOutputstr<<endl;
Decrypt(szOutputstr,szPassWord);
cout<<szPassWord<<endl;
}
return 0;
}
char* Encrypt(char* originalstr,char *outputstr)
{
long lBit,lX,lY,lLen,i;
lX=lY=0;
lLen = strlen(originalstr);
for (i=0;i<lLen;i++)
{
lBit = originalstr[i];
lY = lBit * 13 % 256 + lX;
if (lY>=256)
{
lY -= 256;
lX = lBit * 13 / 256 +1;
}
else
{
lX = lBit * 13 / 256;
}
outputstr[i] = lY;
}
outputstr[i] = lX;
outputstr[i+1] = '\0';
cout<<outputstr<<endl;
lLen ++;
memcpy(originalstr,outputstr,lLen);
// lLen = strlen(originalstr);
lX=lY=0;
memset(outputstr,0,sizeof(outputstr));
for (i=0;i<lLen;i++)
{
lBit = originalstr[i];
// 取前4位值
lY = lBit / 16 + a[i%10];
outputstr[2*i] = lY;
// 取后4位值
lY = (lBit%16) + a[(i+3)%10];
// lY = (lBit%16) + 64;
outputstr[2*i+1] = lY;
}
outputstr[2*i] = '\0';
return "";
}
char* Decrypt(char* originalstr,char *outputstr)
{
long lBit,lX,lY,lLen,i;
lX=lY=0;
lLen = strlen(originalstr);
for (i=0;i<lLen;i++)
{
lBit = originalstr[i];
// 取前4位值
lY = (lBit - a[i/2%10])*16;
// 取后4位值
lY = lY + (originalstr[i+1]-a[(i/2+3)%10]);
// lY = lY + (originalstr[i+1]-64);
outputstr[i/2] = lY;
i++;
}
outputstr[(i+1)/2] = '\0';
lLen = (i+1)/2;
cout<<outputstr<<endl;
// strcpy(originalstr,outputstr);
memcpy(originalstr,outputstr,lLen);
// lLen = strlen(originalstr);
lX=lY=0;
lX = (unsigned char)originalstr[lLen-1];
memset(outputstr,0,sizeof(outputstr));
// outputstr[lLen-1]='\0';
for (i=lLen-2;i>=0;i--)
{
// lBit = (static_cast<unsigned char>)originalstr[i];
lBit = (unsigned char)originalstr[i];
lY = lX * 256 + lBit;
lX = lY % 13;
outputstr[i] = lY/13;
}
outputstr[lLen-1] = '\0';
return "";
}
/*
Function UserDeCode(password As String) As String
'口令解密
Dim is_out As String
Dim il_x, il_y, il_len, i, il_bit As Long
il_len = LenB(password)
il_x = 0
il_y = 0
is_out = ""
For i = 1 To il_len Step 2
il_bit = AscB(MidB(password, i, 1))
'取前4位值
il_y = (il_bit - 64) * 16
'取后4位值
'dd = AscW(Mid(password, i + 1, 1)) - 64
il_y = il_y + AscB(MidB(password, i + 1, 1)) - 64
is_out = is_out & ChrB(il_y)
Next
il_x = 0
il_y = 0
password = is_out
is_out = ""
il_len = LenB(password)
il_x = AscB(MidB(password, il_len, 1))
For i = (il_len - 1) To 1 Step -1
il_y = il_x * 256 + AscB(MidB(password, i, 1))
il_x = il_y Mod 13
is_out = ChrB(Fix(il_y / 13)) & is_out
Next
UserDeCode = is_out
End Function
*/
/*
<%
Function UserCode(password As String) As String
'用户口令加密
Dim il_bit, il_x, il_y, il_z, il_len, i As Long
Dim is_out As String
il_len = LenB(password)
il_x = 0
il_y = 0
is_out = ""
For i = 1 To il_len
il_bit = AscB(MidB(password, i, 1)) 'b系列支持中文
il_y = (il_bit * 13 Mod 256) + il_x
is_out = is_out & ChrB(Fix(il_y)) '取整 int和fix区别: fix修正负数
il_x = il_bit * 13 / 256
Next
is_out = is_out & ChrB(Fix(il_x))
password = is_out
il_len = LenB(password)
il_x = 0
il_y = 0
is_out = ""
For i = 1 To il_len
il_bit = AscB(MidB(password, i, 1))
'取前4位值
il_y = il_bit / 16 + 64
is_out = is_out & ChrB(Fix(il_y))
'取后4位值
il_y = (il_bit Mod 16) + 64
is_out = is_out & ChrB(Fix(il_y))
Next
UserCode = is_out
End Function
%>
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -