我已成功将某些内容构建到绑定的 MS Access 表单中,该表单可以根据客户的请求对名称进行加密。此过程还会解密数据。我需要一个catch all来查看输入中的内容,然后解密或加密数据。
非常确定有一些东西可以循环遍历名称并判断它是否是常规单词/字母。
这是未加密的名称: 抢劫者特蕾莎
这是加密后的样子: µ`›±¤à ØpŽ³²ó
我几乎肯定两者都是 ASCII 字符集的一部分,因为 Unicode 没有打开。 我只是希望我的代码能够获取该值并说:“已加密”或“未加密”。 (正确/错误)。
好吧,我要回答我自己的问题。当我问的时候我并不知道,但我知道什么会起作用。 我正在寻找一个逐个字符循环的字符串,以查看其中是否有任何一个表示加密值。 我发现我使用的加密将普通文本更改为 ASCII 的“扩展字符集”。 (普通文本使用前 127 个字符)。 因此,我检查该循环中是否存在任何扩展字符。
在此过程中,寻求者建议在加密时在前面标记一个值,以便可以轻松检查。那会起作用的。
MarkJ 建议使用一个公共布尔变量,在显示或保存记录时将其设置为未设置。可能有用。当然足够有效来反驳。
我将分享一个实践中的想法(不是我的)。当然,它可能不适用于您的情况,但无论如何请看一下。
前段时间在一个使用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
您说“客户端能够使用绑定表单上的输入旁边的按钮来加密或解密名称。”难道您不能仅跟踪按钮点击来确定数据是否已加密吗?
只需使用模块级布尔变量 bIsEncrypted 即可。当表单首次加载时,它将为 False。在“加密/解密”按钮中单击,只需执行“bEncrypted = Not bEncrypted”即可。因此,每次用户单击该按钮时,该值都会切换。
种子密码:bdd2869203b16418375411d97448e6fab27901b0584a465164a7e9d2ce344e2c 结果密码:697ebf9b9190833d23464713f74cd833f23511b10b3e0d589182dfef7a6feaff