2013-06-21 108 views
-1

我已經設法建立一個綁定的MS Access窗體,根據客戶的請求加密名稱的東西。該過程也解密數據。我需要一個看看輸入內容是什麼,然後解密或加密數據。如何判斷保存的值是加密還是解密?

很確定有些東西可以通過名稱循環,並判斷它是否是普通的單詞/字母。

下面是未加密的名字: 搶劫犯鄧麗君

這裏是什麼樣子加密: μ`>±¤à¬pŽ³²ó

我幾乎可以肯定都是一個ASCII的一部分字符集,因爲Unicode未打開。 我只想讓我的代碼能夠接受值並說:「已加密」或「未加密」。 (真假)。

+3

我不明白。如果您加密某些內容並將其保存到數據庫,則會對其進行加密。如果你用所有數據做到這一點,那麼你知道它全部加密。你爲什麼需要測試它? –

+0

後者絕對不是[ASCII](http://en.wikipedia。org/wiki/ASCII),而是一些[Windows代碼頁](http://en.wikipedia.org/wiki/Windows_code_page) - 可能是1252.問題是,如果你的程序必須在使用重音字符的國家工作,你可以'可靠地使用測試「只包含值爲<127」的字符...... – fvu

+0

[請參閱有關在VBA中的ASCII此答案](http://stackoverflow.com/questions/16587077/vba-search-in-字段提取字符串到字符/ 16588396#16588396) – 2013-06-21 23:26:31

回答

0

我會從練習中分享一個想法(不是我的)。當然,它可能不適用於你的情況,但無論如何看看。前一段在使用INI專有的舊遊戲中,我看到其中大部分(但不是全部)都被加密,所有加密文件都以「BINI」(不含引號)開頭。解析器通過這種方式知道它們是加密的。 (如果我知道的話)只有一部分(僅限名字)被加密,但如果你遵循這個想法,並且如果你可以修改加密/解密的代碼,那麼你可以做一些類似的事情,例如用一個或多個字符前綴加密名稱,例如可以說Chr(128),當然在解密過程中跳過這些字符。

如果這一切都有意義,並適用於所有的,那麼你的IsEncrypted功能可能是:

Public Function IsEncrypted(ByVal strThis As String) As Boolean 
    If Asc(Mid(strThis, 1, 1)) = 128 Then IsEncrypted = True 
End Function 
+0

是的。非常好的主意。 – JustJohn

0

你說「的客戶端進行加密或者使用旁邊一個按鈕輸入的解密名稱的能力一個綁定的形式「。你不能只跟蹤按鈕點擊,以確定數據是否加密?

只需使用模塊級布爾變量bIsEncrypted。當表單第一次加載時它將會是False。在「加密/解密」按鈕中單擊,只需執行「bEncrypted = Not bEncrypted」。所以每次用戶點擊按鈕時,該值都會切換。

+0

是的。但是我需要能夠判斷該值是否被加密,因爲它是以其他形式顯示的。例如搜索表單。但是,是的,一個切換按鈕或布爾值是一種方法。 – JustJohn

+0

從你所說的話來看:如果其他表單直接從數據庫中讀取數據,它就會被加密。如果他們從另一個表格中讀取它們,他們可以檢查布爾值(如果你把它公開) – MarkJ

+0

嗯。不知道爲什麼我會迴避這一點。但是,你是對的。而且我在其他時間使用過這種方法。現在,布爾值,ASCII檢查或boojum樹方法都是靜音的,因爲搜索表單必須僅使用輸入的正常文本(名,姓)搜索這些列。 – JustJohn

1

好吧,我要回答我自己的問題。當我問我的時候我並不知道,但我知道會發生什麼。 我正在尋找一個字符通過字符循環通過一個字符串,看看他們中的任何一個表明加密值。 我發現我使用的加密將正常文本改爲ASCII的「擴展字符集」。 (普通文本使用前127個字符)。 因此,如果存在任何擴展字符,則檢查該循環。

在所有這個探索者建議在加密時將一個值標記到前面,這可以容易地檢查。這將工作。

MarkJ建議在顯示或保存記錄時設置爲未設置的公共布爾變量。可能工作。當然有效的嘗試反駁。

相關問題