字節(jié)逐位倒排序加密法是以比特為單位的換位加密方法,用VB實(shí)現(xiàn)的具體算法是:
成都創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元疏勒做網(wǎng)站,已為上家服務(wù),為疏勒各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
(1) 以二進(jìn)制模式打開源文件;
(2) 從源文件第I位讀取一個(gè)字節(jié),假設(shè)為字母“A”,得到“A”的ASCII值為65;
(3) 將65轉(zhuǎn)換成八位二進(jìn)制串為“01000001”;
(4) 將“01000001”按字節(jié)逐位倒排序得另一個(gè)八位二進(jìn)制串“10000010”;
(5) 將“10000010”轉(zhuǎn)換成十進(jìn)制再寫回源文件第I位置,完成一個(gè)字節(jié)的加密;
(6) 重復(fù)(2)、(3)、(4)和(5),直到所有字節(jié)加密結(jié)束。
為了使程序模塊化,我們用函數(shù)過程ByteToBin完成將字節(jié)型數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制串(其實(shí)質(zhì)就是將十進(jìn)制數(shù)轉(zhuǎn)換成八位二進(jìn)制串);用函數(shù)過程BinToByte將二進(jìn)制串轉(zhuǎn)換成字節(jié)型數(shù)據(jù)(實(shí)質(zhì)是將八位二進(jìn)制串轉(zhuǎn)換成十進(jìn)制數(shù)):用函數(shù)過程Reverse將八位二進(jìn)制串逐位倒排序。具體程序如下:
Function ByteToBin(m As Byte) As String ' 將字節(jié)型數(shù)據(jù)轉(zhuǎn)換成八位二進(jìn)制字符串
Dim c$
c$ = ""
Do While m 0
r = m Mod 2
m = m \ 2
c$ = r c$
Loop
c$ = Right("00000000" c$, 8)
ByteToBin = c$
End Function
Function Reverse(m As String) As String ' 將八位二進(jìn)制字符串顛倒順序
Dim i%, x$
x = ""
For i = 1 To 8
x = Mid(m, i, 1) x
Next i
Reverse = x
End Function
Function BinToByte(m As String) As Byte ' 將八位二進(jìn)制串轉(zhuǎn)換成十進(jìn)制
Dim x As String * 1, y%, z%
z = 0
For i = 1 To 8
x = Mid(m, i, 1)
y = x * 2 ^ (8 - i)
z = z + y
Next i
BinToByte = z
End Function
Private Sub Command1_Click()
Dim x As Byte, i%, fname$
fname = InputBox("請(qǐng)輸入要加密的文件名!注意加上路徑名:")
If Dir(fname) = "" Then
MsgBox "文件不存在!"
Exit Sub
End If
Open fname For Binary As #1 ' 以二進(jìn)制訪問模式打開待加密文件
For i = 1 To LOF(1) ' LOF函數(shù)是求文件長度的內(nèi)部函數(shù)
Get #1, i, x ' 取出第i個(gè)字節(jié)
x = BinToByte(Reverse(ByteToBin(x))) ' 這里調(diào)用了三個(gè)自定義函數(shù)
Put #1, i, x ' 將加密后的這個(gè)字節(jié)寫回到文件原位置
Next i
Close
MsgBox "任務(wù)完成!"
End Sub
本例可以完成對(duì)任意文件的加密與解密,對(duì)同一文件作第一次處理為加密,第二次處理為解密。要調(diào)試本程序,可用記事本在C盤根目錄下任意建立一個(gè)文本文件(假設(shè)為文件名為aaa.txt),其中的內(nèi)容任意(可以包括字母、漢字、數(shù)字、回車符、換行符等)。運(yùn)行本程序后,在輸入文件名的對(duì)話框中輸入文件名(如:“C:\aaa.txt”)后回車,即可完成對(duì)文件的加密。文件加密后,可以在記事本中打開該文件查看加密效果。如果想解密,可再次運(yùn)行該程序并輸入相同文件名。
在FormLoad事件里,寫如下代碼:
If MsgBox("是否打開程序?", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
End
End If
大概方法是這樣,要想加密碼的話,將MsgBox()換成你自己寫的對(duì)話框。
如果還嫌不夠具體的話,你這點(diǎn)兒分就不夠。。。
Private Function myEncrypt(ByVal Code As String) As String
Dim Result As String = ""
Dim CurrentChar As Char
For i As Integer = 0 To Code.Length - 1
CurrentChar = Code.Substring(i, 1)
Select Case Code.Substring(i, 1)
Case "Z"
Result = "a"
Case "z"
Result = "A"
Case Else
Result = Chr(Asc(CurrentChar) + 1)
End Select
Next
Return Result
End Function
'vb.net 2005 調(diào)試通過
"采用DES算法"這個(gè)說法不明確,首先是使用多少位的DES進(jìn)行加密,通常是128位或192位,其次是,要先把主密鑰轉(zhuǎn)化成散列,才能供DES進(jìn)行加密,轉(zhuǎn)化的方法是什么沒有明確,通常是md5,所以有的銀行卡說是128位md5 3DS就是指用md5轉(zhuǎn)換主密鑰散列,用DES進(jìn)行加密,但是DES本身是64位(包含校驗(yàn)碼),2DES是128位,3DES是192位,但是沒有2DES的叫法,所以128位、192位統(tǒng)稱3DES
要完整的md5+3DS實(shí)例,需要100分以上,要不到我的空間中查找相關(guān)的文章
最好的加密就是通過你的網(wǎng)站去加密!用網(wǎng)絡(luò)服務(wù)器驗(yàn)證把一些主要程序都可以加載到服務(wù)器上!這樣你的程序加密就完美了! (個(gè)人觀點(diǎn)純屬不懂裝懂的。哈哈見笑)
網(wǎng)上有很多專業(yè)的加密教程
最適合小開發(fā)者的軟件加密方式就是下面這個(gè)
獲取硬件信息和個(gè)人注冊(cè)時(shí)的姓名手機(jī)號(hào)等一系列信息,通過預(yù)先設(shè)定好的加密函數(shù)進(jìn)行散列加密,生成一個(gè)只有本人本機(jī)能使用的序列號(hào),軟件正版授權(quán)的時(shí)候用同樣的方式生成序列號(hào)進(jìn)行比對(duì),一樣則通過