Ⅰ 求一個安全性稍高的vb6 密匙 加密/解密 演算法 100分
AES加密演算法可以自定義密鑰
很好用適合管道通訊加密
還有WEB系統的管理登陸認證
Ⅱ VB語句函數大全
(一)類型轉換類函數
1. CType(X)
[格式]:
P=CBool(X)
' 將X轉換為"布爾"(Boolean)類型
P=CByte(X)
' 將X轉換為"位元組"(Byte)類型
P=CCur(X)
' 將X轉換為"金額"(Currency)類型
P=CDate(X)
' 將X轉換為"日期"(Date)類型
P=CDbl(X)
' 將X轉換為"雙精度"(Double)類型
P=CInt(X)
' 將X轉換為"整型"(Integer)類型
P=CLng(X)
' 將X轉換為"長整型"(Long)類型
P=CSng(X)
' 將X轉換為"單精度"(Single)類型
P=CStr(X)
' 將X轉換為"字元串"(String)類型
P=Cvar(X)
' 將X轉換為"變體型"(Variant)類型
P=CVErr(X)
' 將X轉換為Error值
[ 範例 ]:
(1). CStr(13)+CStr(23)
' 數值轉換成字元串後,用"+"號連接, 結果:1323
(2). CInt("12")+12
' 字元串轉換成整型後與12相加, 結果:24
(3). P=CInt(True)
' 輸出結果為-1
' 布爾值與數值的轉換時要注意,布爾值只有True和False,其中True在內存中為-1,False存為0
(4). CBool(-0.001)
' 輸出結果為True
' 將數值轉換為布爾型時,等於0的數值將得到False,不等於0的數值得到True.
2. Int(X),Fix(X):取X的整數值
[格式]:
P=Int(X) ' 取<=X的最大整數值
P=Fix(X) ' 取X的整數部分,直接去掉小數
[範例]:
(1) Int(-54.6)
' 結果為-55,取<=-54.6的最大整數
(2) Fix(54.6)
' 結果為54,取整數並直接去掉小數
(二)常用數學函數
[格式]:
1. Abs(N) 取絕對值
例:Abs(-3.5) 結果:3.5
2. Cos(N) 餘弦函數
例:Cos(0) 結果:1
3. Exp(N) e為底的指數函數
例:Exp(3) 結果:20.068
4. Log(N) 以e為底的自然對數
例:Log(10) 結果:2.3
5. Rnd[(N) 產生隨機數
例:Rnd 結果:0--1之間的數
6. Sin(N) 正弦函數
例:Sin(0) 結果:0
7. Sgn(N) 符號函數
' 說明:取正負號。Y=Sgn(X) 既 X>0 則Y=1;X=0 則Y=0;X<0 則Y= -1
8. Sqr(N) 平方根
例:Sqr(9) 結果:3
9. Tan(N) 正切函數
例:Tan(0) 結果:0
10.Atn(N) 反切函數
例:Atn(0) 結果:0
[注意]:在三角函數中,以弧度表示。
(一)字元串類函數:
1. ASC(X),Chr(X):轉換字元字元碼
[格式]:
P=Asc(X) 返回字元串X的第一個字元的字元碼
P=Chr(X) 返回字元碼等於X的字元
[範例]:
(1)P=Chr(65)
'輸出字元A,因為A的ASCII碼等於65
(2)P=Asc("A")
'輸出65
2. Len(X):計算字元串X的長度
[格式]:
P=Len(X)
[說明]:
空字元串長度為0,空格符也算一個字元,一個中文字雖然佔用2 Bytes,但也算一個字元。
[範例]:
(1) 令X="" (空字元串)
Len(X) 輸出結果為0
(2) 令X="abcd"
Len(X) 輸出結果為4
(3) 令X="VB教程"
Len(X) 輸出結果為4
3. Mid(X)函數:讀取字元串X中間的字元
[格式]:
P=Mid(X,n)
由X的第n個字元讀起,讀取後面的所有字元。
P=Mid(X,n,m)
由X的第n個字元讀起,讀取後面的m個字元。
[範例]:
(1) X="abcdefg"
P=Mid(X,5)
結果為:P="efg"
(2) X="abcdefg"
P=Mid(X,2,4)
結果為P="bcde"
4. Replace: 將字元串中的某些特定字元串替換為其他字元串
[格式]:
P=Replace(X,S,R)
[說明]:將字元串X中的字元串S替換為字元串R,然後返回。
[範例]:
X="VB is very good"
P=Replace(X,good,nice)
輸出結果為:P="VB is very nice"
5. StrReverse:反轉字元串
[格式]:
P=StrReverse(X)
[說明]:
返回X參數反轉後的字元串
[範例]:
(1)X="abc"
P=StrReverse(X)
輸出結果:P="cba"
6. Ucase(X),Lcase(X):轉換英文字母的大小寫
[格式]:
P=Lcase(X)
'將X字元串中的大寫字母轉換成小寫
P=Ucase(X)
'將X字元串中的小寫字母轉換成大寫
[說明]:除了英文字母外,其他字元或中文字都不會受到影響。
[範例]:
(1) 令 X="VB and VC"
則Lcase(X)的結果為"vb and vc",Ucase(X)的結果為"VB AND VC"
7. InStr函數:尋找字元串
[格式]:
P=InStr(X,Y)
從X第一個字元起找出Y出現的位置
P=InStr(n,X,Y)
從X第n個字元起找出Y出現的位置
[說明]:
(1) 若在X中找到Y,則返回值是Y第一個字元出現在X中的位置。
(2) InStr(X,Y)相當於InStr(1,X,Y)。
(3) 若字元串長度,或X為空字元串,或在X中找不到Y,則都返回0。
(4) 若Y為空字元串,則返回0。
(二)日期時間類函數:
1. Year(X),Month(X),Day(X):取出年,月,日
[格式]:
P=Year(X)
取出X"年"部分的數值
P=Month(X)
取出X"月"部分的數值
P=Day(X)
取出X"日"部分的數值
[說明]:Year返回的是公元年,若X里只有時間,沒有日期,則日期視為#1899/12/30#
2. Hour,Minute,Second函數:取出時,分,或秒
[格式]:
P=Hour(X)
取出X"時"部分的數值
P=Minute(X)
取出X"分"部分的數值
P=Second(X)
取出X"秒"部分的數值
[說明]:Hour的返回值是0---23之間
[範例]:
X=10:34:23
P=Hour(X)
Q=Minute(X)
R=Second(X)
則輸出結果:P=10,Q=34,R=23
3. DateSerial函數:合並年,月,日成為日期
[格式]:DateSerial(Y,M,D)
其中Y是年份,M為月份,D為日期
[說明]:
(1) M值若大於12,則月份從12月起向後推算M-12個月;若小於1,則月份從1月起向後推算1-M個月。
(2) 若日期D大於當月的日數,則日期從當月的日數起,向後推算D-當月日數;若小於1,則日期從1日起向前推算1-D日。
[範例]:
P=DateSerial(2000,02,02)
則結果為P=2000/02/02
4.TimeSerial函數:合並時,分,秒成為時間
[格式]:P=TimeSerial(H,M,S)
其中H為小時數,M為分鍾數,S為秒數
[說明]:推算原理同上面的DateSerial
[範例]:
P=TimeSerial(6,32,45)
結果為:P=6:32:45
5.Date,Time,Now函數:讀取系統的日期時間
[格式]:
P=Date()
P=Time()
P=Now()
[說明]:這三個函數都無參數
[範例]:
若當前時間為2003年8月29日晚上19點26分45秒,則
P=Now()
結果為:P=2003-08-29 19:26:45
6.MonthName:返回月份名稱
[格式]:P=MonthName(X)
[說明]:X參數可傳入1---12,則返回值為"一月"、"二月"……,但是在英文Windows環境下,返回的是"January","February"……
[範例]:
P=MonthName(1)
則P="一月"
7.WeekdayName:返回星期名稱
[格式]:P=WeekdayName(X)
[說明]:X參數可傳入1—7,則返回值為"星期日","星期一"……,但是在英文windows環境下,返回的是"Sunday","Monday"……
[範例]:
P=WeekdayName(1)
結果為:P="星期日"
函數名稱 函數功能
Cbool(string) 轉換為布爾值
Cbyte(string) 轉換為位元組類型的值
Ccur(string) 轉換為貨幣類值
Cdate(string) 轉換為日前類型的值
Cdbl(string) 轉換為雙精度值
Cint(string) 轉換為整數值
Clng(string) 轉換為長整型的值
Csng(string) 轉換為單精度的值
Cstr(var) 轉換為字元串值
Str(var) 數值轉換為字元串
Val(string) 字元串轉換為數值
***************************************
Abs(nmb) 返回數子的絕對值
Atn(nmb) 返回一個數的反正切
Cos(nmb) 返回一個角度的余炫值
Exp(nmb) 返回自然指數的次方值
Int(nmb) 返回數字的整形(進位)部份 8.4-->9
Fix(nmb) 返回數字的整形(捨去)部份 8.4-->8
Formatpercent(表達式) 返回百分比
Hex(nmb) 返回數據的16進制數
Log(nmb) 返回自然對數
Oct(nmb) 返回數字的8進制數
Rnd 返回大於「0」而小於「1」的隨機數
Sgn(nmb) 判斷一個數字的正負號
Sin(nmb) 返回角度的正鉉值
Sqr(nmb) 返回數字的二次方根
Tan(nmb) 返回一個數的正切值
Asc(string) 返回ASCII字元串
Chr(charcode) 根據字元代碼返回字元
Instr(string,searchstr) 返回被搜索字元串的第一個字元位置,string是字元串,searchstr是被搜索的字元串
InstrRev(string,searchstr) 同上,只是從右面開始搜索
Lcase(var) 把字元串變為小寫
Left(string,nmb) 從string中返回從左面開始的nmb個字元串
Len(string) 返回字元串的長度
Ltrim(string) 截去字元串左邊的空格
Filter(inputstrings,value) 返回字元串數組的字集,Inputstrings是字元串組,value是在數組中尋找的字元
Rtrim(string) 截去字元串右邊的空格
Trim(string) 截去字元串前後空格
Mid(string,start,len) 在string中返回從start位置開始的len個字元
Replace(string,find,withstr) 在字元串string中,用withstr來替換find字元串
Right(string,nmb) 從string中返回從右面開始的nmb個字元串
Space(nmb) 返回指定空格的字元串
StrComp(string1,string2) 比較兩個字元串
Ucase(string) 把字元串變為大寫
****************************************
Date() 返回當前系統日期
DateAdd(interval,nmb,date) 用一個基礎時間返回指定增加了時間間隔的日期,interval是間隔類型,yyyy-年,m-月,d-日,h-小時,n-分。
DateDiff(interval,nmb1,nmb2) 返回兩個時間間隔,interval的意思同上
Datevalue(date) 發揮Date中的日期部份
Day(date) 返回天數
FormatDatetime(date) 返回格式化為日期的表達式
Hour(time) 返回時間的小時數
Minute(time) 返回時間的分鍾數
Month(date) 返回日期中的月份
Now() 返回系統的日期和時間
Second(time) 返回時間中的秒數
Time() 返回系統的當前時間
Weekday(date) 返回星期幾
WeekdayName(date) 返回星期幾的中文名
Year(date) 返回年份
IsArray(var) 判斷一個變數是否是數組
IsDate(var) 判斷一個變數是否是日期
IsNull(var) 判斷一個變數是否為空
IsNumeric 判斷表達式是否包含數值
IsObject(var) 判斷一個變數是否是對象
TypeName(var) 返回變數的數據類型
************************************
Array(list) 返回數組
CreateObject(class) 創建一個對象
GetObject(pathfilename) 得到文件對象
Inputbox(prompt) 提供一個可供輸入數據的對話框
LBound(arrayP) 返回數組的最小索引
Msgbox(string) 輸出一個消息框
Split(liststr) 從一個列表字元串中返回一個一維數組
Ubound(array) 返回數組的最大索引
Ⅲ vb6.0 如何用json傳輸圖片
1、讀取圖片的byte數組
2、使用base6 4把byte數組加密成字元串,放進json串中
3、接收端從json中提取圖片加密成的字元串,使用base⑥4解密成byte數組
4、載入圖片
Ⅳ 怎麼用vb6以二進制讀寫文件
Pirvate Sub Sub1() 'C:\Data.exe 到 C:\Data.txt
Open "C:\Data.exe" For Binary As #1
Open "C:\Data.txt" For Binary As #2
Dim i As Byte
Do While Not EOF(1)
Get #1, , i
Put #2, , i
Loop
Close #1
Close #2
End Sub
Pirvate Sub Sub2() 'C:\Data.txt 到 C:\Data.exe
Open "C:\Data.txt" For Binary As #1
Open "C:\Data.exe" For Binary As #2
Dim i As Byte
Do While Not EOF(1)
Get #1, , i
Put #2, , i
Loop
Close #1
Close #2
End Sub
樓上的老兄說的很對,確實不是「1」和「0」,因為雖然內容由「1」「0」組成,但是這是硬碟碟片上的痕跡,而程序(二進制方式)所讀寫的是位元組。然後,位元組/雙位元組再被翻譯成字元,再連接成字元串。這就是你在「記事本」中打開 EXE 看到的東西,所謂的「亂碼」。
Ⅳ 求教VB6.0關於BASE64加密演算法錯誤問題
Option Explicit
Private Const BASE64CHR As String = "+/="
Private psBase64Chr(0 To 63) As String
'從一個經過Base64的字元串中解碼到源字元串
Public Function DecodeBase64String(str2Decode As String) As String
DecodeBase64String = StrConv(DecodeBase64Byte(str2Decode), vbUnicode)
End Function
'從一個經過Base64的字元串中解碼到源位元組數組
Public Function DecodeBase64Byte(str2Decode As String) As Byte()
Dim lPtr As Long
Dim iValue As Integer
Dim iLen As Integer
Dim iCtr As Integer
Dim Bits(1 To 4) As Byte
Dim strDecode As String
Dim str As String
Dim Output() As Byte
Dim iIndex As Long
Dim lFrom As Long
Dim lTo As Long
InitBase
'//除去回車
str = Replace(str2Decode, vbCrLf, "")
'//每4個字元一組(4個字元表示3個字)
For lPtr = 1 To Len(str) Step 4
iLen = 4
For iCtr = 0 To 3
'//查找字元在BASE64字元串中的位置
iValue = InStr(1, BASE64CHR, Mid$(str, lPtr + iCtr, 1), vbBinaryCompare)
Select Case iValue 'A~Za~z0~9+/
Case 1 To 64:
Bits(iCtr + 1) = iValue - 1
Case 65 '=
iLen = iCtr
Exit For
'//沒有發現
Case 0: Exit Function
End Select
Next
'//轉換4個6比特數成為3個8比特數
Bits(1) = Bits(1) * &H4 + (Bits(2) And &H30) \ &H10
Bits(2) = (Bits(2) And &HF) * &H10 + (Bits(3) And &H3C) \ &H4
Bits(3) = (Bits(3) And &H3) * &H40 + Bits(4)
'//計算數組的起始位置
lFrom = lTo
lTo = lTo + (iLen - 1) - 1
'//重新定義輸出數組
ReDim Preserve Output(0 To lTo)
For iIndex = lFrom To lTo
Output(iIndex) = Bits(iIndex - lFrom + 1)
Next
lTo = lTo + 1
Next
DecodeBase64Byte = Output
End Function
'將一個Base64字元串解碼,並寫入二進制文件
Public Sub DecodeBase64StringToFile(strBase64 As String, strFilePath As String)
Dim fso As New Scripting.FileSystemObject, _
i As Long
If fso.FileExists(strFilePath) Then
fso.DeleteFile strFilePath, True
End If
i = FreeFile
Open strFilePath For Binary Access Write As i
Put i, , DecodeBase64Byte(strBase64)
Close i
Set fso = Nothing
End Sub
'將一個Base64編碼文件解碼,並寫入二進制文件
Public Sub DecodeBase64FileToFile(strBase64FilePath As String, strFilePath As String)
Dim fso As New Scripting.FileSystemObject
Dim ts As TextStream
If Not fso.FileExists(strBase64FilePath) Then Exit Sub
Set ts = fso.OpenTextFile(strBase64FilePath)
DecodeBase64StringToFile ts.ReadAll, strFilePath
End Sub
'將一個位元組數組進行Base64編碼,並返回字元串
Public Function EncodeBase64Byte(sValue() As Byte) As String
Dim lCtr As Long
Dim lPtr As Long
Dim lLen As Long
Dim sEncoded As String
Dim Bits8(1 To 3) As Byte
Dim Bits6(1 To 4) As Byte
Dim i As Integer
InitBase
For lCtr = 1 To UBound(sValue) + 1 Step 3
For i = 1 To 3
If lCtr + i - 2 <= UBound(sValue) Then
Bits8(i) = sValue(lCtr + i - 2)
lLen = 3
Else
Bits8(i) = 0
lLen = lLen - 1
End If
Next
'//轉換字元串為數組,然後轉換為4個6位(0-63)
Bits6(1) = (Bits8(1) And &HFC) \ 4
Bits6(2) = (Bits8(1) And &H3) * &H10 + (Bits8(2) And &HF0) \ &H10
Bits6(3) = (Bits8(2) And &HF) * 4 + (Bits8(3) And &HC0) \ &H40
Bits6(4) = Bits8(3) And &H3F
'//添加4個新字元
For lPtr = 1 To lLen + 1
sEncoded = sEncoded & psBase64Chr(Bits6(lPtr))
Next
Next
'//不足4位,以=填充
Select Case lLen + 1
Case 2: sEncoded = sEncoded & "=="
Case 3: sEncoded = sEncoded & "="
Case 4:
End Select
EncodeBase64Byte = sEncoded
End Function
'對字元串進行Base64編碼並返回字元串
Public Function EncodeBase64String(str2Encode As String) As String
Dim sValue() As Byte
sValue = StrConv(str2Encode, vbFromUnicode)
EncodeBase64String = EncodeBase64Byte(sValue)
End Function
'對文件進行Base64編碼並返回編碼後的Base64字元串
Public Function EncodFileToBase64String(strFileSource As String)
Dim lpdata() As Byte, _
i As Long, _
n As Long, _
fso As New Scripting.FileSystemObject
If Not fso.FileExists(strFileSource) Then Exit Function
i = FreeFile
Open strFileSource For Binary Access Read Lock Write As i
n = LOF(i) - 1
ReDim lpdata(0 To n)
Get i, , lpdata
Close i
EncodFileToBase64String = EncodeBase64Byte(lpdata)
End Function
'對文件進行Base64編碼,並將編碼後的內容直接寫入一個文本文件中
Public Sub EncodFileToBase64File(strFileSource As String, strFileBase64Desti As String)
Dim fso As New FileSystemObject, _
ts As TextStream
Set ts = fso.CreateTextFile(strFileBase64Desti, True)
ts.Write (EncodFileToBase64String(strFileSource))
ts.Close
Set ts = Nothing
Set fso = Nothing
End Sub
Private Sub InitBase()
Dim iPtr As Integer
'初始化 BASE64數組
For iPtr = 0 To 63
psBase64Chr(iPtr) = Mid$(BASE64CHR, iPtr + 1, 1)
Next
End Sub
Ⅵ 怎樣反編譯程序
高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。
但是通常內不能把可執行文容件變成高級語言源代碼,只能轉換成匯編程序。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
反編譯是一個復雜的過程,所以越是高級語言,就越難於反編譯,但目前還是有許許多多的反編譯軟體: VB: VBExplorer 、VB反編譯精靈和VBRezQ;只能反編譯界面圖像,好像代碼不能完全反編譯 java: JAD ;java的反編譯比較常見,所以反編譯比較完全, 將class文件反編譯成java文件也是有可能的 C++ : eXeScope Dephi: DEDE c#:Reflector 易語言:E-Code Explorer.exe(易格式可執行文件分析器)。