Bogart SysPwd.vb
Module syspwd
Public Const STR_MASK = "MyFunction" '加密用字串
Public Const INT_PWD_LENGTH = '預定義密碼長度
Public GintCheckPwd As Integer
'當傳入的密碼長度大於預定義密碼長度時
'將?生一個Message Box
'以下兩個常量是該Message Box中的具體提示資訊和標題欄中的文字
Public Const STR_PWD_ERROR = "The length of password can not be greater than 10 characters !"
Public Const STR_SYSTEM_NAME = "Bogart Report System"
Public Const STR_INVALID_USER = "Password is not valid !"
Public Const STR_CHANGE_PASSWORD_ERROR = "User ID is not valid !"
'以下的變數的定義在正式使用時去掉
'該函數的作用是將傳入的密碼字串轉換成加密的密碼字串
'傳入的字串是用戶輸入的未經過系統加密的密碼
'傳出的資料類型是字串型,?經過系統加密後的密碼
Public Function EnPwd(ByVal strIn As String) As String
Dim intCount As Integer
Dim intPwdWord() As Integer
Dim intTemp As Integer
Dim strColumn1 As String
Dim strColumn2 As String
Dim strColumn3 As String
Dim strTemp As String
Dim intDivTemp As Integer
strColumn1 = ""
strColumn2 = ""
strColumn3 = ""
intTemp =
strTemp = ""
intDivTemp =
If Len(strIn) > INT_PWD_LENGTH Then
MsgBox(STR_PWD_ERROR, , STR_SYSTEM_NAME)
EnPwd = ""
Exit Function
End If
ReDim intPwdWord(INT_PWD_LENGTH)
For intCount = To INT_PWD_LENGTH
If Len(STR_MASK) < INT_PWD_LENGTH Then
intTemp = intTemp +
If intTemp > Len(STR_MASK) Then
intTemp =
End If
intPwdWord(intCount) = Asc(Mid(STR_MASK, intTemp, ))
Else
intPwdWord(intCount) = Asc(Mid(STR_MASK, intCount, ))
End If
Next
For intCount = To Len(strIn)
intTemp = Asc(Mid(strIn, intCount, ))
intDivTemp = intDivTemp +
If intDivTemp > Then
intDivTemp =
End If
intTemp = intTemp * intDivTemp
intPwdWord(intCount) = intPwdWord(intCount) + intTemp
Next
For intCount = To INT_PWD_LENGTH
strTemp = CStr(intPwdWord(intCount))
If Len(strTemp) < Then
strTemp = StrDup( - Len(strTemp), "") & strTemp
End If
strColumn1 = strColumn1 & Mid(strTemp, , )
strColumn2 = strColumn2 & Mid(strTemp, , )
strColumn3 = strColumn3 & Mid(strTemp, , )
Next
EnPwd = strColumn1 & strColumn2 & strColumn3
End Function
'該函數的作用是將傳入的加密的密碼字串轉換成不加密的密碼字串
'傳入的字串是經過系統加密後的密碼
'傳出的資料類型是字串型,?未經過系統加密的密碼
Public Function DePwd(ByVal strIn As String) As String
Dim intCount As Integer
Dim intTemp As Integer
Dim strTemp As String
Dim strColumn1 As String
Dim strColumn2 As String
Dim strColumn3 As String
Dim intPwdWord() As Integer
Dim intDivTemp As Integer
DePwd = ""
strColumn1 = ""
strColumn2 = ""
strColumn3 = ""
intTemp =
strTemp = ""
intDivTemp =
strColumn1 = Mid(strIn, , INT_PWD_LENGTH)
strColumn2 = Mid(strIn, INT_PWD_LENGTH + , INT_PWD_LENGTH)
strColumn3 = Mid(strIn, INT_PWD_LENGTH * + , INT_PWD_LENGTH)
strTemp = ""
For intCount = To INT_PWD_LENGTH
strTemp = strTemp & Mid(strColumn1, intCount, )
strTemp = strTemp & Mid(strColumn2, intCount, )
strTemp = strTemp & Mid(strColumn3, intCount, )
Next
ReDim intPwdWord(INT_PWD_LENGTH)
For intCount = To INT_PWD_LENGTH
intPwdWord(intCount) = Val(Mid(strTemp, intCount * - , ))
If Len(STR_MASK) < INT_PWD_LENGTH Then
intTemp = intTemp +
If intTemp > Len(STR_MASK) Then
intTemp =
End If
intPwdWord(intCount) = intPwdWord(intCount) - Asc(Mid(STR_MASK, intTemp, ))
Else
intPwdWord(intCount) = intPwdWord(intCount) - Asc(Mid(STR_MASK, intCount, ))
End If
intDivTemp = intDivTemp +
If intDivTemp > Then
intDivTemp =
End If
intPwdWord(intCount) = intPwdWord(intCount) / intDivTemp
If intPwdWord(intCount) <> Then
DePwd = DePwd & Chr(intPwdWord(intCount))
End If
Next
End Function
'以下函數?檢查密碼是否有效
'傳入的第一個參數?用戶名,第二個是密碼(未加密)
'如果密碼正確,則返回True
'如果密碼不正確或該用戶不存在,則出現MsgBox後返回False
Public Function CheckPwd(ByVal strUser As String, ByVal strPassword As String) As Boolean
GintCheckPwd = GintCheckPwd +
Dim Rs As New ADODB.Recordset
Dim strSQLStmt As String
CheckPwd = False
On Error GoTo DBError
If adoConn.State <> ConnectionState.Open Then
adoConn.Open()
End If
strSQLStmt = "SELECT Password FROM " & g.gRptdev & "g_userid WHERE UserID='" & strUser & "'"
'以下的dbconn應該改寫成統一的連庫
Rs.Open(strSQLStmt, adoConn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
If Rs.Fields().Value <> EnPwd(strPassword.ToUpper) Then
MsgBox(STR_INVALID_USER, vbCritical, STR_SYSTEM_NAME)
'If GintCheckPwd = 3 Then
' MsgBox("您已經三次登陸失敗,系統將退出", vbExclamation, STR_SYSTEM_NAME)
'End If
Exit Function
End If
CheckPwd = True
Exit Function
DBError:
MsgBox(STR_INVALID_USER, vbExclamation, STR_SYSTEM_NAME)
End Function
'以下函數?檢查密碼是否有效
'傳入的第一個參數?用戶名,第二個是新密碼(未加密)
'如果更改成功,則返回True
'如果更改不成功(可能因?用戶不存在等原因),則出現MsgBox後返回False
Public Function ChangePwd(ByVal strUser As String, ByVal strPassword As String) As Boolean
Dim Rs As ADODB.Recordset
Dim strSQLStmt As String
ChangePwd = False
On Error GoTo DBError
adoConn.BeginTrans()
strSQLStmt = "SELECT Password FROM " & g.gRptdev & "g_userid WHERE UserID='" & strUser & "'"
'以下的dbconn應該改寫成統一的連庫
Rs = adoConn.Execute(strSQLStmt)
If Rs.EOF Then
MsgBox(STR_CHANGE_PASSWORD_ERROR, , STR_SYSTEM_NAME)
Rs.Close()
adoConn.RollbackTrans()
Exit Function
End If
Rs.Close()
strSQLStmt = "UPDATE " & g.gRptdev & "g_userid SET Password = '" & EnPwd(strPassword.ToUpper) & "' WHERE UserID='" & strUser & "'"
adoConn.Execute(strSQLStmt)
adoConn.CommitTrans()
ChangePwd = True
Exit Function
DBError:
MsgBox(STR_CHANGE_PASSWORD_ERROR, , STR_SYSTEM_NAME)
adoConn.RollbackTrans()
End Function
End Module
Bogart SysPwd.vb的更多相关文章
- Bogart BogartPublic.vb
Imports System.Data.SqlClient Imports System.Data #Region "IBogartToolbar,請勿隨便更改" Interfac ...
- Bogart gSub.vb
'--------------Job No 0900408 -------------- '--DIM PART ONE ONLINE Update Order Qty '''主要新加過程名 Refr ...
- Bogart gData.vb
Imports System Imports System.Data Imports System.Data.OleDb Imports Microsoft.VisualBasic Imports S ...
- Bogart BogartAutoCode.vb
Imports System.Data.SqlClient Imports System.Data Public Class BogartAutoCodeDataBase Private Conn A ...
- Bogart gFunction.vb
Module gFunction '其它不是常用的方法及函數 #Region " 將指定的數據格式轉換為英文格式" Public Function EnglishFormat(By ...
- Bogart gGrid.vb
Namespace BogartMis.Cls Public Class gGrid '設定表格控的列標題的別名 '說明:strItem字符串的格式為"01,02,03,04,05" ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
- 用VB脚本批到导入字段到PowerDesigner
在PowerDesigner使用脚本批量导入excel中记录的表结构信息,由于需要通过powerdesigner逆向工程创建一些sybase IQ的表,由于是接口数据,只有excel表,手动导入太耗时 ...
随机推荐
- google-protobuf安装详解
前言 编译调试项目的过程中涉及到caffe的编译,提示没有安装protobuf的错误,本文详解protobuf的安装: 问题描述 解决步骤 1.查看google protobuf的github,没有直 ...
- cocoapods 安装过程及常见问题
1.可以参考这个网页的教程:http://code4app.com/article/cocoapods-install-usage 2.按照以下步骤进行安装: 1.配置rugy静态环境 gem sou ...
- Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
Unity-塔防游戏源码 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 2 3 4 5 6 7 8 9 ...
- ZZNU 2125:A + B 普拉斯(傻逼题+大数加法)
2125: A + B 普拉斯 时间限制: 1 Sec 内存限制: 128 MB 提交: 94 解决: 28 [提交] [状态] [讨论版] [命题人:admin] 题目描述 "别人总说 ...
- VSCode搭建node + typescript开发环境
我们一起来喜欢TypeScript 现在写js不用TypeScript,伦家可能会觉得你是外星人. 是的,TypeScript很大程度增强了代码的可读性,可跟踪性,可维护性和减少了bug. 那么没有理 ...
- 状压dp终极篇(状态转移的思想)
状压dp是将每种状态都压缩成用一个二进制串,然后利用位运算进行操作的dp,而凡是dp都需要进行状态转移 对于简单的dp问题只需要一个二维数组dp[ i ][ j ]就能解决 具体操作为首先把状态压缩为 ...
- 【java编程】正确重写hashCode和equesl方案
一. 正确书写hashCode的办法: [原则]按照equals( )中比较两个对象是否一致的条件用到的属性来重写hashCode(). {1}. 常用的办法就是利用涉及到的的属性进行线性组合. {2 ...
- LG1397 [NOI2013]矩阵游戏
题意 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][ ...
- Linux中常用的函数
1.devm_kzalloc() 函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device ...
- 构建一个dbt 数据库适配器
脚手架新的适配器 首先,将odbc适配器模板复制到同一目录中的新文件. 更新dbt / adapters / factory.py以将新适配器包含为类型.还要将类型添加到dbt / contracts ...