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

📄 rc4.cpp

📁 1、对于凯撒密文
💻 CPP
字号:
// Rc4.cpp: implementation of the CRc4 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "030300816.h"
#include "Rc4.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CRc4::CRc4()
{
//	m_iStream = 0;
//	m_jStream = 0;
}

CRc4::~CRc4()
{

}

void CRc4::Decipher()
{
	m_iStream = 0;
	m_jStream = 0;
	CString temp = _T("");
	CString plainTemp = _T("");
	long chTemp = 0;
	char ch;
	for ( int i = 0 ; i < m_cipherString.GetLength() ; )
	{
		bitset<8> m_K(NextRand());
		for ( int j = 0 ; j < 8 ; j ++ )
		{
			ch = m_cipherString.GetAt( i );
			if ( ( ch == '1' && m_K[7-j] == 1 )
				||
				( ch == '0' && m_K[7-j] == 0 ) )
				temp += "0";
			else
				temp += "1";
			i ++;
		}
		chTemp = StrToData( temp , 2 );
		plainTemp += (char)chTemp;
	}
	m_plainString = plainTemp;
}

void CRc4::Encipher()
{
	m_iStream = 0;
	m_jStream = 0;
	CString temp=_T("");
	for ( int i = 0 ; i < m_plainString.GetLength() ; i ++ )
	{
		bitset<8> m_K(NextRand());
		char ch = (char)m_plainString.GetAt( i );
		char tt = 0x01;
		char bi[8];//convert char to bi[8] in binary
		for ( int p = 0 ; p < 8 ; p ++ )
		{
			if ( ch & tt )
				bi[7-p] = '1';
			else
				bi[7-p] = '0';
			tt <<= 1;
		}
		for ( int k = 0 ; k < 8 ; k ++ )
		{
			if ( ((m_K[7-k] == 1 )&& (bi[k] == '1'))
				||
				((m_K[7-k] == 0 )&& (bi[k] == '0')) 
				) 
				temp+="0";
			else 
				temp+="1";
		}
	}
	m_cipherString = temp;
}

UINT CRc4::NextRand()
{
	UINT t;
	m_iStream = ( m_iStream + 1 ) % 256;
	m_jStream = ( m_jStream + m_S[m_iStream] ) % 256;
	t = m_S[m_iStream]; m_S[m_iStream] = m_S[m_jStream]; m_S[m_jStream] = t;
    t = ( m_S[m_iStream] + m_S[m_jStream] ) % 256;
	return m_S[t];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -