導航:首頁 > 網路信息 > 如何給網站添加註冊碼

如何給網站添加註冊碼

發布時間: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銆佺『璁ら渶瑕佸彉鏇寸殑淇℃伅銆

閱讀全文

與如何給網站添加註冊碼相關的資料

熱點內容
cad如何傳輸全站儀數據 瀏覽:642
如何破壞所有的excel文件 瀏覽:766
數據大屏壁紙哪裡可以找到 瀏覽:235
融學大數據APP 瀏覽:938
win10共享不了文件夾許可權訪問 瀏覽:808
qq頭像可愛卡通超萌 瀏覽:804
院內文件具體有哪些 瀏覽:337
大數據公鏈 瀏覽:653
蘋果ios描述文件下載 瀏覽:237
哪個網站賣動物 瀏覽:72
投標文件如何導入excel 瀏覽:775
計算器編程序怎麼學 瀏覽:500
如何知道櫥窗賣出的商品是哪個app的 瀏覽:56
大眾寶來點火線圈數據流通道號是多少 瀏覽:981
手機後台網路怎麼關閉 瀏覽:537
大數據安徽 瀏覽:563
iphone鎖屏密碼能破解嗎 瀏覽:964
電信運營商大數據徵信 瀏覽:699
怎麼u盤里的文件打不開 瀏覽:97
如何發word文件怎麼打開 瀏覽:176

友情鏈接