# Re: 档案隐密性的问题~

Posted by 纪文和 on July 27, 1999 at 13:18:27:

In Reply to: 档案隐密性的问题~ posted by KK on July 27, 1999 at 10:47:09:

: 请问如果说有一个文字档,是用来程式执行读入显示的...
: 但是如果直接开启该文字档,也能直接的看到内容~~~
: 这样就没有隐密性了~~~请问有什么方法~~~可以做到
: 这档案的隐密性呢?(譬如说开启该文字档是一片乱码)

好巧!! 我昨天才 Post 这个主题的资料到我自己网站上, 今天就有人问, 方法如下:
(各位看官若满意的话, 请多到我的网站捧场--> VB入门网 http://www.ruentex.com.tw/vbguide)

以下二个模组，一个处理加密，一个处理解密，加密处理必须传入参数 (就是要加密的字串)，加密后将资料存到加密档，要解密时，则从档案中读出并解密：

(假设档案名称为 C:\加密档.qwe, 您可以自行更改档名或路径)

'处理加密
Private Function Encrypt(varPass As String)
If Dir("C:\加密档.qwe") <> "" Then: Kill "C:\加密档.qwe"
Dim varEncrypt As String * 50
Dim varTmp As Double
Open "C:\加密档.qwe" For Random As #1 Len = 50

For I = 1 To Len(varPass)
varTmp = Asc(Mid$(varPass, I, 1))
varEncrypt = Str$(((((varTmp * 1.5) / 2.1113) * 1.111119) * I))
Put #1, I, varEncrypt
Next I

Close #1
End Function

'处理解密
Private Function Decrypt() As String
Open "C:\加密档.qwe" For Random As #1 Len = 50
Dim varReturn As String * 50
Dim varConvert As Double
Dim varFinalPass As String
Dim varKey As Integer

For I = 1 To LOF(1) / 50
Get #1, I, varReturn
varConvert = Val(Trim(varReturn))
varConvert = ((((varConvert / 1.5) * 2.1113) / 1.111119) / I)
varFinalPass = varFinalPass & Chr(varConvert)
Next I

Decrypt = varFinalPass
Close #1
End Function

使用实例：
Private Sub Command1_Click()
Encrypt Text1 '将 Text1 中的字存到档案中
End Sub

Private Sub Command2_Click()
Text2 = Decrypt '将从档案中读出的字转译放回 Text2
End Sub

- VB入门网

Follow Ups: