vbdes演算法
Ⅰ VB中如何編寫一個加密程序
編寫一個加密軟體,要求將源文件按位元組逐位倒排序加密法加密。
位元組逐位倒排序加密法是以比特為單位的換位加密方法,用vb實現的具體演算法是:
(1) 以二進制模式打開源文件;
(2) 從源文件第i位讀取一個位元組,假設為字母「a」,得到「a」的ascii值為65;
(3) 將65轉換成八位二進制串為「01000001」;
(4) 將「01000001」按位元組逐位倒排序得另一個八位二進制串「10000010」;
(5) 將「10000010」轉換成十進制再寫回源文件第i位置,完成一個位元組的加密;
(6) 重復(2)、(3)、(4)和(5),直到所有位元組加密結束。
為了使程序模塊化,我們用函數過程bytetobin完成將位元組型數據轉換成二進制串(其實質就是將十進制數轉換成八位二進制串);用函數過程bintobyte將二進制串轉換成位元組型數據(實質是將八位二進制串轉換成十進制數):用函數過程reverse將八位二進制串逐位倒排序。具體程序如下:
function bytetobin(m as byte) as string ' 將位元組型數據轉換成八位二進制字元串
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 ' 將八位二進制字元串顛倒順序
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 ' 將八位二進制串轉換成十進制
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("請輸入要加密的文件名!注意加上路徑名:")
if dir(fname) = "" then
msgbox "文件不存在!"
exit sub
end if
open fname for binary as #1 ' 以二進制訪問模式打開待加密文件
for i = 1 to lof(1) ' lof函數是求文件長度的內部函數
get #1, i, x ' 取出第i個位元組
x = bintobyte(reverse(bytetobin(x))) ' 這里調用了三個自定義函數
put #1, i, x ' 將加密後的這個位元組寫回到文件原位置
next i
close
msgbox "任務完成!"
end sub
Ⅱ VB演算法具有 什麼 5個重要特徵
(1)確定性:指演算法的每個步驟都應確切無誤,沒有歧義。
(2)可行性:指演算法的每個步驟必須是計算機能夠有效執行、可以實現的,並可得到確定的結果。
(3)有窮性:指一個演算法應該在有限的時間和步驟內可以執行完畢的。
(4)輸入性:指一個演算法可以有0或多個輸入數據。
(5)輸出性:指一個演算法必須有一個或多個輸出結果。
Ⅲ vb加密演算法
PrivateSubCommand1_Click()
DimtAsString
t=Text1.Text
Text2.Text=Encrypt(t,177,86)
EndSub
PrivateSubCommand2_Click()
DimtAsString
t=Text2.Text
Text4.Text=Encrypt(t,177,86)
End坦蘆滑Sub
親,你這兩個按鈕裡面的代碼都是加密讓臘的啊!
最基本的知識你都沒有理解!哪有加密和解密都用一樣嘩答的代碼!
Ⅳ VB加密演算法
首先程序定義兩個字元串k1和k2;
這里他給出了一個Text1變數,應該是一個全局變數,在程序之前已經定義了。
首先定義code為一個字元串,將Text1裡面的文字用LCase()函數將大寫字母轉換成小寫字母。
加密的過程開始,為那一個循環過程。
在這個循環里 設定i的區間是1到code的長度
每個循環開始時候,將code中每一個字母取出來,賦值到s變數裡面。
然後判斷如果s不是空字元時候,將n賦值為s中的字母與字母a的一個"距離"(這里說不知道你明白不,你好好理解一下吧)。
假如i,即s裡面的那個字母在code中是第幾位的位數,不是2的倍數,那麼就將在decode裡面加入k1字元串中的第n個字母。假如i是2的倍數的話,就在decode加入k2字元串裡面的第n個字母。
在剛才判斷s是否為空字元時候,假如得到的s是為空字元,即跳入以下過程、。
假如i不是2的倍數,空格那個字母變為k1的第27個字母即p,就加入k2的第27個字母即z。
最後將decode賦值給text2。
其實這個程序很簡單,定義兩個字元串,分別是27個字母,等於是26個字母加空格,再把順序掉亂。然後根據需要加密的字元串來分別去每一個字母,根據字母的位置來確定取k1或者k2對應的那個掩碼字母。
Ⅳ 我想做一個加密解密文件的VB程序!用des加密解密方法!!! 希望高手解答!
vb.net code注意隨機密碼按鈕在沒用,調試時你自己輸入密碼,一定為8位,我是將文件存在D盤,你自己在修改一下,那個就很簡單
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sSecretKey As String = Me.TextBox2.Text
EncryptFile(Me.TextBox1.Text, "D:\JMtest.txt", sSecretKey)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim sSecretKey As String = Me.TextBox2.Text
DecryptFile("D:\JMtest.txt", "D:\Decrypted.txt", sSecretKey)
End Sub
Sub EncryptFile(ByVal sInputFilename As String, ByVal sOutputFilename As String, ByVal sKey As String)
Dim fsInput As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
Dim fsEncrypted As New FileStream(sOutputFilename, FileMode.Create, FileAccess.Write)
Dim DES As New DESCryptoServiceProvider
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()
Dim cryptostream As New CryptoStream(fsEncrypted, desencrypt, CryptoStreamMode.Write)
Dim byteArrayInput(fsInput.Length - 1) As Byte
fsInput.Read(byteArrayInput, 0, byteArrayInput.Length)
cryptostream.Write(byteArrayInput, 0, byteArrayInput.Length)
cryptostream.Close()
End Sub
Sub DecryptFile(ByVal sInputFilename As String, ByVal sOutputFilename As String, ByVal sKey As String)
Dim DES As New DESCryptoServiceProvider
DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor
Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
Dim fsDecrypted As New StreamWriter(sOutputFilename)
fsDecrypted.Write(New StreamReader(cryptostreamDecr, System.Text.ASCIIEncoding.Default).ReadToEnd)
fsDecrypted.Flush()
fsDecrypted.Close()
End Sub
Private Sub BtnChoose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnChoose.Click
OpenFileDialog1.FileName = ""
OpenFileDialog1.Filter = "txt files (*.txt)|*.txt"
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
Me.TextBox1.Text = OpenFileDialog1.FileName
End If
End Sub
End Class