資源簡介
VC環(huán)境下實現(xiàn)希爾密碼的加密、解碼和破譯

代碼片段和文件信息
#include?“stdafx.h“
#include?“HillCode.h“
CHillCode::CHillCode()?
:?m_szM(NULL)?m_szE(NULL)?m_matrixEncryKey()?m_matrixDiscryKey()?m_nLenM(0)?m_nLenE(0)
{
}
CHillCode::~CHillCode()
{
if?(NULL?!=?m_szM)?
{
delete?m_szM;
m_szM?=?NULL;
}
if(NULL?!=?m_szE)
{
delete?m_szE;
m_szE?=?NULL;
}
}
void?CHillCode::SetM(const?unsigned?char?*pM)
{
if?(NULL?!=?m_szM)
{
delete?m_szM;
m_szM?=?NULL;
}
m_szM?=?new?unsigned?char[m_nLenM];
if?(NULL?==?m_szM)
{
exit(1);
}
memcpy((char?*)m_szM?(const?char?*)pM?m_nLenM);
}
int?CHillCode::SetEncryKey(const?long?*?plMatrix?const?int?LEN)
{
int?nLen?=?LEN;
m_nLenM?=?(int)sqrt((double)nLen);
m_nLenE?=?m_nLenM;
if(0?>=?m_nLenM)
{
return?0;
}
m_matrixEncryKey.InitMatrix(m_nLenM?m_nLenM);
int?i?=?0;
int?j?=?0;
for(i=0;?i {
for(j=0;?j {
m_matrixEncryKey.SetElement(i?j?(long)plMatrix[i*m_nLenM+j]);
}
}
m_matrixDiscryKey?=?m_matrixEncryKey;
long?lPhalanxValue?=?0;?
lPhalanxValue?=?m_matrixDiscryKey.GetPhalanxValue();
if(!lPhalanxValue?||?!(lPhalanxValue%2))
{
return?0;
}
m_matrixDiscryKey.Adjoint();
m_matrixDiscryKey?=?m_matrixDiscryKey?*?Reciprocal(lPhalanxValue);
m_matrixDiscryKey.Mod(MAPLEN);
return?1;
}
const?char?*?CHillCode::Encrypting()
{
if(0?==?m_szM)
{
return?NULL;
}
CMatrix?matrixM;
matrixM.InitMatrix(m_nLenM?1);
int?i?=?0;
for(i=0;?i {
matrixM.SetElement(i?0?(long)m_szM[i]);
}
CMatrix?matrixE;
long?lValue?=?0;
if(0?!=?m_szE)
{
delete?m_szE;
m_szE?=?NULL;
}
matrixE.InitMatrix(m_nLenE?1);
matrixE?=?m_matrixEncryKey?*?matrixM;
matrixE.Mod(MAPLEN);
m_szE?=?new?unsigned?char[m_nLenE];
if(0?==?m_szE)
{
exit(1);
}
for(i=0;?i {
matrixE.GetElement(i?0?lValue);
m_szE[i]?=?(unsigned?char)lValue;
}
return?(const?char?*)m_szE;
}
void?CHillCode::SetDiscryKey(const?CMatrix?&matrixDiscryKey)
{
if(matrixDiscryKey.GetRows()?!=?matrixDiscryKey.GetCols())
{
return;
}
m_matrixDiscryKey?=?matrixDiscryKey;
m_nLenM?=?matrixDiscryKey.GetCols();
m_nLenE?=?matrixDiscryKey.GetCols();
}
void?CHillCode::SetE(const?unsigned?char?*pE)
{
if?(NULL?!=?m_szE)
{
delete?m_szE;
m_szE?=?NULL;
}
m_szE?=?new?unsigned?char[m_nLenE];
if?(NULL?==?m_szE)
{
exit(1);
}
memcpy((char?*)m_szE?(const?char?*)pE?m_nLenE);
}
const?char?*?CHillCode::Discrypting()
{
if(0?==?m_szE)
{
return?NULL;
}
CMatrix?matrixE;
matrixE.InitMatrix(m_nLenE?1);
int?i?=?0;
for(i=0;?i {
matrixE.SetElement(i?0?(long)m_szE[i]);
}
CMatrix?matrixM;
long?lValue?=?0;
if(0?!=?m_szM)
{
delete?m_szM;
m_szM?=?NULL;
}
matrixM.InitMatrix(m_nLenM?1);
matrixM?=?m_matrixDiscryKey?*?matrixE;
matrixM.Mod(MAPLEN);
m_szM?=?new?unsigned?char[m_nLenM];
if(0?==?m_szM)
{
exit(1);
}
for
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????18329??2009-12-28?10:54??HillCodor\Debug\HillCode.obj
?????文件??????????0??2009-12-28?10:54??HillCodor\Debug\HillCode.sbr
?????文件????3466240??2009-12-28?10:54??HillCodor\Debug\HillCodor.bsc
?????文件?????131153??2009-12-28?10:54??HillCodor\Debug\HillCodor.exe
?????文件?????237892??2009-12-28?10:54??HillCodor\Debug\HillCodor.ilk
?????文件??????16848??2009-12-28?10:54??HillCodor\Debug\HillCodor.obj
?????文件????9492740??2009-12-28?10:54??HillCodor\Debug\HillCodor.pch
?????文件?????320512??2009-12-28?10:54??HillCodor\Debug\HillCodor.pdb
?????文件???????3860??2009-12-28?10:54??HillCodor\Debug\HillCodor.res
?????文件??????????0??2009-12-28?10:54??HillCodor\Debug\HillCodor.sbr
?????文件??????72993??2009-12-28?10:54??HillCodor\Debug\HillCodorDlg.obj
?????文件??????????0??2009-12-28?10:54??HillCodor\Debug\HillCodorDlg.sbr
?????文件??????24730??2009-12-28?10:54??HillCodor\Debug\Matrix.obj
?????文件??????????0??2009-12-28?10:54??HillCodor\Debug\Matrix.sbr
?????文件?????111628??2009-12-28?10:54??HillCodor\Debug\StdAfx.obj
?????文件????1607628??2009-12-28?10:54??HillCodor\Debug\StdAfx.sbr
?????文件?????263168??2009-12-28?10:54??HillCodor\Debug\vc60.idb
?????文件?????454656??2009-12-28?10:54??HillCodor\Debug\vc60.pdb
?????目錄??????????0??2009-12-28?10:54??HillCodor\Debug
?????文件????????296??2005-09-11?22:22??HillCodor\Discryption.txt
?????文件????????296??2005-09-11?22:22??HillCodor\Encryption.txt
?????文件???????3845??2005-09-11?16:07??HillCodor\HillCode.cpp
?????文件????????873??2005-09-11?14:07??HillCodor\HillCode.h
?????文件??????23536??2005-09-11?22:49??HillCodor\HillCodor.aps
?????文件???????2855??2005-09-11?22:51??HillCodor\HillCodor.clw
?????文件???????2105??2005-09-10?14:07??HillCodor\HillCodor.cpp
?????文件???????4466??2005-09-11?22:51??HillCodor\HillCodor.dsp
?????文件????????543??2005-09-10?14:07??HillCodor\HillCodor.dsw
?????文件???????1357??2005-09-10?14:07??HillCodor\HillCodor.h
?????文件??????55808??2005-09-11?22:51??HillCodor\HillCodor.opt
............此處省略22個文件信息
評論
共有 條評論