📄 login.cpp
字号:
// Login.cpp : implementation file
//
#include "stdafx.h"
#include "lx1.h"
#include "Login.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Login dialog
int power(int a, int n, int m)
{
int z=1, t;
for(t=a; n>0; n>>=1)
{
if (n%2==1) z=(z*t) % m;
t=(t*t) % m;
}
return(z);
}
BOOL isPrime(int x)
{
int i;
for (i = 2; i <= (int)sqrt(x); i++)
{
if (x % i == 0)
break;
}
if (i > (int)sqrt(x))
return true;
return false;
}
int gcd(int a, int b)
{
if (a == 0)
{
return b;
}
else
{
return gcd(b % a, a);
}
}
int Euler(int e, int fin)
{
int u1 = 1;
int u2 = 0;
int u3 = fin;
int v1 = 0;
int v2 = 1;
int v3 = e;
int v = 1;
int t1, t2, t3;
int q;
int uu, vv;
int inverse, z;
while (v3 != 0)
{
q = (int)(u3 /v3);
t1 = u1 - q * v1;
t2 = u2 - q * v2;
t3 = u3 - q * v3;
u1 = v1;
u2 = v2;
u3 = v3;
v1 = t1;
v2 = t2;
v3 = t3;
z = 1;
}
uu = u1;
vv = u2;
if (vv < 0)
inverse = vv + fin;
else
inverse = vv;
int m6 = inverse;
return m6;
}
Login::Login(CWnd* pParent /*=NULL*/)
: CDialog(Login::IDD, pParent)
{
//{{AFX_DATA_INIT(Login)
m_name = _T("");
m_pass = _T("");
//}}AFX_DATA_INIT
}
void Login::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Login)
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_PASS, m_pass);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Login, CDialog)
//{{AFX_MSG_MAP(Login)
ON_BN_CLICKED(IDOK_ADD, OnAdd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Login message handlers
void Login::OnAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int i;
CString buf,m1=m_name,m2=m_pass;
CString strTemp;
if(strlen(m1)>8)
{
AfxMessageBox("用户名不可以大于8位");
}
else if(strlen(m2)>10)
{
AfxMessageBox("密码不可以大于10位");
}
else if(strlen(m1)==0||strlen(m2)==0)
{
AfxMessageBox("注册名和密码都不可以为空");
}
else
{
AfxMessageBox("正在生成密钥请等待。。。。。。");
int m3,m4; //生成密钥的函数
while(true)
{
srand(time(0));
m3 = rand() % 100;
m4 = rand() % 100;
if (isPrime(m3) && isPrime(m4))
break;
}
int m5;
m5=m3*m4;
int fiN = (m3 - 1) * (m4 - 1);
//int e;
for (int j= 3; j< fiN; j++)
{
if (isPrime(j) && gcd(fiN, j) == 1)
{
int m5 = j;
break;
}
}
int m6;
m6=Euler(m5, fiN);
CString m8;
m8.Format("%d",m6);
if(strlen(m1)<8)for(i=0;i<8-strlen(m1);i++)m1+=" ";
if(strlen(m2)<10)for(i=0;i<10-strlen(m2);i++)m2+=" ";
CString m7;
m7.Format("%d",m5);
if(strlen(m7)<10)for(i=0;i<10-strlen(m7);i++)m7+=" ";
if(strlen(m8)<10)for(i=0;i<10-strlen(m8);i++)m8+=" ";
buf=m1+m2+m7+m8;
FILE *fp;
fp=fopen("d:\\1.txt","ab+");
if(fp){
fwrite((LPCTSTR)buf,buf.GetLength(),1,fp);
fclose(fp);
}
AfxMessageBox("注册成功");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -