⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1114.cpp

📁 很久之前写的一个简单加密解密程序。并不专业
💻 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 + -