导航:首页 > 网络信息 > 如何给网站添加注册码

如何给网站添加注册码

发布时间:2024-04-07 07:03:43

㈠ 鎵嬫妸鎵嬫暀浣犲備綍鍦ㄥ忔辰缃戦嗗彇娉ㄥ唽鐮

澶忔辰缃戞彁渚涜稿氬厤璐瑰勾閴翠笅杞斤紝瑙e喅浜嗗緢澶氬悓瀛﹀啓璁烘枃鎵炬暟鎹闅剧殑闂棰橈紝浣嗘槸澶忔辰缃戝緢澶氬勾閴撮渶瑕侀嗗彇娉ㄥ唽鐮侊紝娉ㄥ唽璐﹀彿鎵嶈兘鐪嬪埌锛屽緢澶氬悓瀛﹁繕涓嶇煡閬撳備綍棰嗗彇娉ㄥ唽鐮侊紝浠婂ぉ灏辨暀澶у舵敞鍐岀爜棰嗗彇鏂瑰紡銆
宸ュ叿/鏉愭枡
鐢佃剳

缃戠粶
01
鎵撳紑澶忔辰缃戙
02
闅忔満鎵句竴绡囬渶瑕佺殑骞撮壌锛岀偣鍑汇愪笅杞姐戯紝杩欓噷閫夋嫨鐨勬槸寮犲舵腐缁熻″勾閴2018鐗堛
03
鐐瑰嚮涓嬭浇閾炬帴涔嬪悗锛屼細寮瑰嚭鎻愮ず淇℃伅椤甸潰锛屾彁绀烘垜浠闇瑕佹敞鍐屼細鍛樻墠鑳界湅鍒般
04
鐐瑰嚮銆愮櫥褰曟垨娉ㄥ唽銆戙
05
鐐瑰嚮銆愯繕娌℃敞鍐 鐐瑰嚮杩欓噷銆戣繘鍏ユ敞鍐岄〉闈銆
06
鍦ㄥ熀鏈淇℃伅濉鍐欓〉闈锛屾壘鍒“娉ㄥ唽鐮”锛岀偣鍑荤櫧妗嗗悗闈㈢殑銆愬厤璐硅嚜鍔╄幏鍙栥戙
07
杩涘叆娉ㄥ唽鐮侀嗗彇椤甸潰锛岃繖閲屾槸澶忔辰缃戠殑涓涓娉ㄥ唽鐮佸厤璐圭敵璇锋柟娉曠殑鏁欑▼锛岀偣鍑荤涓鏉$殑钃濊壊閾炬帴銆
08
澶嶅埗鏈涓嬫柟鐨勭孩鑹叉敞鍐岀爜閾炬帴锛岃繕鏈変笉娓呮氱殑鍙浠ョ湅澶忔辰缃戠殑鐢宠锋暀绋嬪啀娆$悊瑙c
09
鎵撳紑璞嗙摚閾炬帴锛堝彲浠ュ湪寰鍗氥佺綉绔欍佽哄潧锛夊彂甯冩よ秴閾炬帴锛岃繖閲岄夌敤璞嗙摚閾炬帴锛屽厛鐧诲綍鑷宸辩殑璞嗙摚璐﹀彿锛岀劧鍚庤繘鍏ヤ釜浜轰腑蹇冿紝鍦ㄦ垜鐨勬棩璁扮被鐩锛岀偣鍑汇愬啓鏃ヨ般戙
10
杈撳叆鏍囬橈紝姝f枃閮ㄥ垎浣跨敤瓒呴摼鎺ュ姛鑳斤紝灏嗗垰鍒氬嶅埗鐨勫忔辰缃戠孩鑹查摼鎺ョ矘璐村埌瓒呴摼鎺ョ涓琛屽唴锛岀浜岃屽啓涓婃敞鍐岀爜锛岀偣鍑汇愮‘瀹氥戯紝鍐嶇偣鍑汇愪笅涓姝ャ戙
11
璁剧疆鏃ュ織鍒嗙被锛屽彲浠ラ殢渚块変竴涓锛岀偣鍑汇愭彁浜ゃ戙
12
鏃ュ織鍙戝竷鍚庯紝鎴戜滑灏辫兘鐪嬪埌鍒氬垰缂栬緫鐨勬棩蹇楀唴瀹癸紝鍐嶅洖澶嶆嗗唴鍐嶆$矘璐村忔辰缃戠殑绾㈣壊閾炬帴锛岀偣鍑诲洖澶嶏紝鍦ㄥ洖澶嶆嗗氨鑳界湅鍒伴摼鎺ワ紝鐐瑰嚮鍥炲嶆嗙殑閾炬帴銆
13
鍐嶆¤繘鍏ュ忔辰缃戯紝灏嗕細鍦ㄦ悳绱涓嬫柟锛岀湅鍒“鎮ㄦ墍鐢宠风殑娉ㄥ唽鐮佷负锛歺xxxxx”锛屾瘡涓鏃堕棿娈电敓鎴愮殑娉ㄥ唽鐮侀兘涓嶅悓锛屽嶅埗姝ゆ敞鍐岀爜锛屽~鍏ユラ6鐨勬敞鍐岀爜妗嗗唴锛屽啀濉涓婂叾浠栧熀鏈淇℃伅锛屽嵆鍙瀹屾垚璐﹀彿娉ㄥ唽锛屾煡鐪嬪厤璐瑰勾閴淬

㈡ 请问怎么给软件加注册验证

要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码;3、在软件不注册情况下,如何限制软件功能的局限性;4、对已经负费使用用户而言,不应造成使用不便。

首先,应该有一个生成注册码的算法,以下是我简单的一个生成15位注册码的算法:
//该函数返回一个CSTRING类型的15位注册码,入口参数为用户名
CString GetRegPasswd(CString &DirName)
{
//将用户名换算成15位注册码
long Num1,Num2,Num3;

char sn[16]={0};
CString p;
int i,len;

Num1=0;
Num2=0;
Num3=0;

len=int(strlen(DirName));
if(len!=0)
{
for( i=1;i<=len;i++)
{
//第一步算法
Num1=(long(Num1+(int(DirName[i-1])*i*i)*(i*sqrt(DirName[i-1])+1)))%100000;
//第二步算法
Num2=(Num2*i+(long(pow((int)DirName[i-1],2)*i)))%100000;
//第三步算法
Num3=(Num2+(long)sqrt(Num1))%100000;
}
//以下把三个算法结果分别生成5个字符,共有15个
for(i=0;i<5;i++)
sn[i]=(int)(Num1+31+i*i*i)%128;
for(i=5;i<10;i++)
sn[i]=(int)(Num2+31+i*i*i)%128;
for(i=10;i<15;i++)
sn[i]=(int)(Num3+31+i*i*i)%128;
sn[15]=0;
//以下循环把所有生成的字符转换为0---9,A---Z,a----z
for(i=0;i<15;i++)
{
while((sn[i]<'0' || sn[i]>'9') && (sn[i]<'A' || sn[i]>'Z') &&(sn[i]<'a' || sn[i]>'z') )
{
sn[i]=(sn[i]+31+7*i)%128;
}
}
//赋值给一个CSTRING变量,用做函数返回值
p.Format("%s",sn);
}
return p;
}
//检查软件是否注册的函数

BOOL GetRegFlag(void)
{
HKEY hKey = NULL;
BYTE i;

CString str;
str.LoadString(IDS_REG_KEY);// IDS_REG_KEY为在注册表中的子目录字符串

if (RegCreateKey(HKEY_CURRENT_USER, str, &hKey) != ERROR_SUCCESS) return false;

DWORD cbA;
cbA=sizeof(int);
if( RegQueryValueEx(hKey, "SzMima",NULL,NULL, &i,&cbA) != ERROR_SUCCESS)
return false;

BYTE j=i;
if(j==0)//0代表软件已经注册,可以正常使用
{
RegCloseKey(hKey);
return true;
}
else
{
RegCloseKey(hKey);
return false;
}

return false;
};
//设置软件已经注册标志的函数

BOOL SetRegFlag(void)
{
HKEY hKey = NULL;
BYTE i;

CString str;
str.LoadString(IDS_REG_KEY);// IDS_REG_KEY为在注册表中的子目录字符串

if (RegCreateKey(HKEY_CURRENT_USER, str, &hKey) != ERROR_SUCCESS) return false;

BYTE j=0;//0代表已经注册
if(RegSetValueEx(hKey, "SzMima", 0, REG_BINARY, &j,4) != ERROR_SUCCESS)
{
AfxMessageBox("设置注册表数据失败!");
return FALSE;
}
return false;
};
以上三个函数即可实现软件注册机制,只需要在程序初始化的时候加入以下几句代码即可
BOOL bReg= GetRegFlag ();
if(!bReg)
{
//在此加入限制功能或者拒绝是使用的代码
}
如果用户注册只需要加入以下代码即可
//这是我的程序中的一个注册界面,输入用户名和注册码提交后检验注册码是否正确的代码
void CRegEdit::OnBnClickedOk()
{
if(!UpdateData()) return;//取得编辑框的内容,并赋值到类变量中

m_RegUser.TrimLeft();//m_RegUser是用户名
m_RegUser.TrimRight();
if(m_RegUser.IsEmpty())
{
AfxMessageBox("用户名不能为空,请重新输入。");
GetDlgItem(IDC_REGUSER)->SetFocus();
return;
}
m_RegPasswd.TrimLeft();m_RegPasswd是注册码
m_RegPasswd.TrimRight();
if(m_RegPasswd.IsEmpty())
{
AfxMessageBox("注册码不能为空,请重新输入。");
GetDlgItem(IDC_REGPASSWD)->SetFocus();
return;
}
CString Passwd;
Passwd=GetRegPasswd(m_RegUser);//调用算法取得该用户名的注册码
if(Passwd==m_RegPasswd)//与用户输入的注册进行比较
{
SetRegFlag();//设置注册标志
OnOK();
}
else
AfxMessageBox("注册码错误,请重新输入。");
UpdateData(false);
}

RSA做软件的注册功能,如果密钥设置的比较大位数的话,基本别人是无法写出注册机的,但是防止别人暴破你的程序又是另一回事了。
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Imports System.Xml

Public Class FrmReg
Inherits System.Windows.Forms.Form

'Dim xmlKeys As String 'A combination of both the public and 'private keys
'Dim xmlPublicKey As String 'The public key only
''The plaintext message in a byte array
'Dim PlainTextBArray As Byte()
''The cyphertext message in a byte array
'Dim CypherTextBArray As Byte()

#Region " Windows 窗体设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer

'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents btnReg As System.Windows.Forms.Button
Friend WithEvents btnexit As System.Windows.Forms.Button
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents txtRegCode As System.Windows.Forms.TextBox
Friend WithEvents txtRegName As System.Windows.Forms.TextBox
Friend WithEvents LinkLabel1 As System.Windows.Forms.LinkLabel
Private Sub InitializeComponent()
Me.btnReg = New System.Windows.Forms.Button
Me.btnexit = New System.Windows.Forms.Button
Me.txtRegName = New System.Windows.Forms.TextBox
Me.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.txtRegCode = New System.Windows.Forms.TextBox
Me.LinkLabel1 = New System.Windows.Forms.LinkLabel
Me.SuspendLayout()
'
'btnReg
'
Me.btnReg.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnReg.Location = New System.Drawing.Point(64, 192)
Me.btnReg.Name = "btnReg"
Me.btnReg.Size = New System.Drawing.Size(75, 24)
Me.btnReg.TabIndex = 0
Me.btnReg.Text = "注册(&R)"
'
'btnexit
'
Me.btnexit.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnexit.Location = New System.Drawing.Point(168, 192)
Me.btnexit.Name = "btnexit"
Me.btnexit.Size = New System.Drawing.Size(75, 24)
Me.btnexit.TabIndex = 1
Me.btnexit.Text = "取消(&C)"
'
'txtRegName
'
Me.txtRegName.Location = New System.Drawing.Point(8, 24)
Me.txtRegName.Name = "txtRegName"
Me.txtRegName.Size = New System.Drawing.Size(296, 21)
Me.txtRegName.TabIndex = 2
Me.txtRegName.Text = ""
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(8, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(48, 16)
Me.Label1.TabIndex = 3
Me.Label1.Text = "注册名:"
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(8, 56)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(56, 16)
Me.Label2.TabIndex = 4
Me.Label2.Text = "注册码:"
'
'txtRegCode
'
Me.txtRegCode.Location = New System.Drawing.Point(8, 80)
Me.txtRegCode.Multiline = True
Me.txtRegCode.Name = "txtRegCode"
Me.txtRegCode.Size = New System.Drawing.Size(296, 104)
Me.txtRegCode.TabIndex = 5
Me.txtRegCode.Text = ""
'
'LinkLabel1
'
Me.LinkLabel1.Location = New System.Drawing.Point(128, 56)
Me.LinkLabel1.Name = "LinkLabel1"
Me.LinkLabel1.Size = New System.Drawing.Size(128, 16)
Me.LinkLabel1.TabIndex = 6
Me.LinkLabel1.TabStop = True
Me.LinkLabel1.Text = "http://Testbug.Net"
'
'FrmReg
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(306, 223)
Me.Controls.Add(Me.LinkLabel1)
Me.Controls.Add(Me.txtRegCode)
Me.Controls.Add(Me.txtRegName)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.btnexit)
Me.Controls.Add(Me.btnReg)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.MaximizeBox = False
Me.Name = "FrmReg"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "RSA&MD5注册例子程序 by www.TestBug.net"
Me.TopMost = True
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub btnexit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnexit.Click
Application.Exit()
End Sub

Private Sub btnReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReg.Click
If txtRegName.Text = "" Then
MessageBox.Show("注册名不能为空", "提示")
Return
Else
If txtRegCode.Text = "" Then
MessageBox.Show("注册码不能为空", "提示")
Return
Else
If txtRegCode.Text.Length <> 172 Then
MessageBox.Show("注册码长度不对", "提示")
Return
End If
End If
End If
Try
Dim RSA As System.Security.Cryptography.RSACryptoServiceProvider = New System.Security.Cryptography.RSACryptoServiceProvider
'公钥
RSA.FromXmlString("xzALwAOqEcj8jWrKXyaecAhyz9W+++Faaw/=AQAB")
Dim RSADeformatter As System.Security.Cryptography.RSAPKCS1SignatureDeformatter = New System.Security.Cryptography.RSAPKCS1SignatureDeformatter(RSA)
'指定解密的时候HASH算法为MD5
RSADeformatter.SetHashAlgorithm("MD5")
Dim Regcode As Byte() = Convert.FromBase64String(txtRegCode.Text)
Dim RegName As Byte() = (New System.Text.ASCIIEncoding).GetBytes(txtRegName.Text)
Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(txtRegName.Text)
Dim hash As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash)
'验证签名
If RSADeformatter.VerifySignature(hash, Regcode) Then
'注册通过的话就写入注册文件
Dim textWriter As XmlTextWriter = New XmlTextWriter("reg.xml", Nothing)
textWriter.WriteStartElement("RegInfo")
textWriter.WriteStartElement("RegName")
textWriter.WriteString(txtRegName.Text)
textWriter.WriteEndElement()
textWriter.WriteStartElement("RegCode")
textWriter.WriteString(txtRegCode.Text)
textWriter.WriteEndElement()
textWriter.Close()
MessageBox.Show("注册正确,谢谢注册本软件,请重新启动程序完成注册", "提示")
Application.Exit()
Else
MessageBox.Show("错误的注册码", "提示")
End If
Catch ex As Exception
'MessageBox.Show(ex.Message())
MessageBox.Show("错误的注册码", "提示")
End Try
End Sub

Private Sub FrmReg_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Application.Exit()
End Sub

Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
System.Diagnostics.Process.Start("http://testbug.net")
End Sub
End Class

㈢ 濡備綍缁欒嚜宸卞缓璁剧殑缃戠珯璁剧疆鐧婚檰鐢ㄦ埛鍚嶅拰瀵嗙爜濡備綍缁欒嚜宸卞缓璁剧殑缃戠珯璁剧疆鐧婚檰鐢ㄦ埛鍚嶅拰瀵嗙爜

濡備綍淇鏀圭綉绔欑敤鎴峰悕鍜屽瘑鐮侊紵

杩欎釜涓鑸鍦ㄨ处鍙疯剧疆閲岋紝鎴栬呭湪涓浜轰腑蹇冨拰瀹夊叏涓蹇冮噷锛屽洜涓烘瘡涓缃戠珯涓嶄竴鏍枫傛瘮濡傜櫨搴﹀湪璐﹀彿璁剧疆銆傚綋鎮ㄦ墦寮甯愭埛璁剧疆鏃讹紝鎮ㄥ彲浠ヤ慨鏀瑰笎鎴蜂俊鎭鍜屽瘑鐮併

safari娴忚堝櫒鎬庢牱鐧婚檰璐﹀彿瀵嗙爜锛

鎵嬪姩娣诲姞Safari娴忚堝櫒鐨勮嚜鍔ㄥ~鍏呭瘑鐮佺殑鍏蜂綋鎿嶄綔姝ラゅ備笅锛

1銆侀栧厛鎴戜滑鎵撳紑璁剧疆锛岀偣鍑烩淪afari鈥濋夐」銆

2銆佺劧鍚庢垜浠鍦ㄨラ〉闈涓鐐瑰嚮鈥滃瘑鐮佲濋夐」銆

3銆佷箣鍚庢垜浠鍦ㄨラ〉闈涓鐐瑰嚮鈥滄坊鍔犲瘑鐮佲濋夐」鍗冲彲鎵嬪姩娣诲姞浠绘剰缃戠珯鐨勮处鍙峰拰瀵嗙爜浜嗐

4銆佹渶鍚庢垜浠鍦ㄨラ〉闈涓濉鍐欑洰鏍囩綉绔欑殑缃戝潃锛岀敤鎴峰悕鍜屽瘑鐮併傚崟鍑诲彸涓婅掔殑鈥滃畬鎴愨濅互淇濆瓨骞堕鍑哄嵆鍙銆

㈣ 澧炲姞娉ㄥ唽鐮侀噾浠庡畨寰芥斂鍔$綉鎬庝箞鍔炵悊

澧炲姞娉ㄥ唽鐮侀噾浠庡畨寰芥斂鍔$綉鍔炵悊姝ラゅ備笅锛
1銆佺櫥褰曞畨寰芥斂鍔℃湇鍔$綉绔欙紝閫夋嫨鍏蜂綋鐨勪紒涓氱櫥璁板湴鍧鎵鍦ㄥ尯銆
2銆佸湪鈥滄硶浜烘湇鍔♀濇祻瑙堥〉闈涓嬮夋嫨鈥滈儴闂ㄥ艰埅鈥濓紝鎵惧埌涓氬姟鍙楃悊閮ㄩ棬鈥滃尯甯傚満鐩戠″眬鈥濄
3銆佸湪涓氬姟绫诲瀷閲岄夋嫨鈥滄敞鍐岀櫥璁扳濄
4銆佸湪涓嬫媺鍒楄〃涓閫夋嫨鍏蜂綋瑕佸姙鐞嗙殑涓氬姟鈥滃叕鍙稿彉鏇寸櫥璁扳濓紝鐐瑰嚮鍙充晶鐨勨滃湪绾垮姙鐞嗏濄
5銆佸湪璺宠浆椤甸潰閫夋嫨鈥滀紒涓氬彉鏇寸櫥璁扮敵璇封濓紝杩涘叆涓嬩竴姝ャ
6銆佸彉鏇村墠锛屽厛鏌ラ槄鍔炵悊澧炶祫鍙樻洿鎵闇鎻愪氦鐨勬潗鏂欐竻鍗曞拰瑕佹眰銆
7銆佸湪璺宠浆椤甸潰锛岄夋嫨鍏蜂綋鍙樻洿鐨勪簨椤癸紝杩欓噷閫夋嫨鈥滄敞鍐岃祫鏈锛堥噾锛夊彉鏇粹滐紝鐐瑰嚮涓嬫柟杩涘叆鈥濅笅涓姝モ溿
8銆佺‘璁ら渶瑕佸彉鏇寸殑淇℃伅銆

阅读全文

与如何给网站添加注册码相关的资料

热点内容
会议上文件读好后要说什么 浏览:783
安装压缩文件office 浏览:417
2014年网络营销大事件 浏览:186
首页全屏安装代码 浏览:39
党规党纪指的哪些文件 浏览:995
windows编程图形界面用什么设置 浏览:266
deb文件安装路径 浏览:540
飞鸽传送提示文件名太长 浏览:486
日服文件名 浏览:648
宏程序和编程哪个好学 浏览:965
怎么打开微信中的文件怎么打开方式打开方式 浏览:98
wordpressgbk版本 浏览:328
怎么看网络的带宽多少兆 浏览:930
word文档粘贴出现文件包 浏览:673
u盘文件传输 浏览:593
飞行棋教程视频 浏览:629
程序员下载网站 浏览:303
苹果5为什么不显示4g网络 浏览:741
怎么做好互联网公司的微信公众号 浏览:135
ipad与iphone取消同步 浏览:697

友情链接