解決方案必須在Excel 2003及更高版本中工作,如果它很重要的話。
對於Excel VBA,我建議使用CAPICOM庫。
從here下載文件。安裝完成後,請按照以下說明註冊Dll。
32位操作系統
複製文件的CAPICOM.dll從C:\Program Files\Microsoft CAPICOM 2.1.0.2 SDK\Lib
到C:\Windows\System32
下一頁上開始菜單 | 運行,輸入此
Regsvr32 C:\Windows\System32\Capicom.dll
64位操作系統
將文件複製CAPICOM。dll從C:\Program Files (x86)\Microsoft CAPICOM 2.1.0.2 SDK\Lib\X86
到C:\Windows\SysWOW64
Next on 開始菜單 | 運行,鍵入此
Regsvr32 C:\Windows\SysWOW64\Capicom.dll
現在,我們都設置爲使用它在我們的VBA項目
一個模塊在此代碼粘貼
Option Explicit
Sub Sample()
Dim TextToEncrypt As String, EncryptedText As String
Dim TextToDeCrypt As String, DeCryptedText As String
Dim KeyToEncrypt As String
TextToEncrypt = "Hello World"
KeyToEncrypt = "JoshMagicWord"
EncryptedText = EncryptString(TextToEncrypt, KeyToEncrypt)
DeCryptedText = DecryptString(EncryptedText, KeyToEncrypt)
Debug.Print "The string " & TextToEncrypt & " after encryption looks like this"
Debug.Print "-----------------------------------------------------------------"
Debug.Print EncryptedText
Debug.Print "-----------------------------------------------------------------"
Debug.Print "The above string after decrypting looks like this"
Debug.Print "-----------------------------------------------------------------"
Debug.Print DeCryptedText
End Sub
Public Function EncryptString(strText As String, ky As String) As String
Dim Cap As Object
Dim cryptIt
Set Cap = CreateObject("CAPICOM.EncryptedData")
Cap.Algorithm = 3
Cap.SetSecret ky
Cap.Content = strText
EncryptString = Cap.Encrypt
End Function
Public Function DecryptString(strText As String, ky As String) As String
Dim Cap As Object
Dim cryptIt
Set Cap = CreateObject("CAPICOM.EncryptedData")
Cap.Algorithm = 3
Cap.SetSecret ky
Cap.Decrypt strText
DecryptString = Cap.Content
End Function
功能EncryptString
加密字符串和函數DecryptString
解密字符串。見結果的快照,當你運行上面Sub Sample
![enter image description here](https://i.stack.imgur.com/l9ecL.png)
如何「安全」並您的解決方案需要是什麼?也就是說,你需要能夠抵制什麼水平來設法找出密碼?請記住,無論您如何操作,它只會像VBA項目上的密碼保護一樣安全,因爲一旦被繞過,您的解碼服務密碼便於訪問...... –
最終,對於此項目, 「真正需要比」平均喬在記事本中打開配置文件時沒有看到密碼「更安全。如果「攻擊者」複製用戶的配置文件,那麼無論它是多麼安全都無所謂。能夠使用DPAPI會很好,但如果有更簡單的可能性,我可以使用更簡單的方法。 – Josh
..但我希望它比rot13或簡單的替換密碼稍微複雜:) – Josh