如何判断保存的值是加密还是解密?

Posted

技术标签:

【中文标题】如何判断保存的值是加密还是解密?【英文标题】:How can I tell whether the saved values are encrypted or decrypted? 【发布时间】:2013-06-21 18:04:22 【问题描述】:

我已经设法在绑定的 MS Access 表单中构建了一些东西,该表单可以根据客户的请求对名称进行加密。此过程还解密数据。我需要一个 catch all 来查看输入中的内容,然后解密或加密数据。

很确定有一些东西可以遍历名称并判断它是否是常规单词/字母。

这是未加密的名称: 抢劫者特蕾莎

这是加密后的样子: µ`›±¤à ¬pŽ³²ó

我几乎肯定两者都是 ASCII 字符集的一部分,因为没有打开 Unicode。 我只是希望我的代码能够获取该值并说:“已加密”或“未加密”。 (真/假)。

【问题讨论】:

我不明白。如果您加密某些内容并将其保存到数据库中,那么它就是加密的。如果你对所有数据都这样做,那么你就知道它都是加密的。为什么需要测试它? 后者肯定不是ASCII,而是一些Windows codepage - 可能是1252。问题是,如果您的程序必须在使用重音字符的国家/地区运行,您就不能可靠地使用测试“仅包含值 please see this answer about the ASCII in VBA 后者是ASCII。它们被称为“扩展字符”。客户端可以使用绑定表单上输入旁边的按钮来加密或解密名称。这允许那些拥有密钥的人(即用户名/密码输入正下方的登录输入)查看该值,但设计者不能,任何拥有该 SQL Server 后端 dba 权限的管理员也不能。这是一个记录员工投诉和问题的数据库。大的。所以我建立了一个循环来查找字符的 ASC 值,如果它在 127 以上,则它被加密。 ASCII 表:asciitable.com 加密方式固定了吗?如果您对密钥使用 XOR“加密”,则加密和解密的过程相同。这将消除判断它是否加密的需要,并且只需使用相同的方法。请注意,任何替换方法都只不过是混淆,并且很容易被破解。 【参考方案1】:

好的,我将回答我自己的问题。当我问的时候我不知道,但我知道什么会起作用。 我正在寻找一个逐个字符的循环字符串,以查看其中是否有任何一个表示加密值。 我发现我使用的加密将普通文本更改为 ASCII 的“扩展字符集”。 (普通文本使用前 127 个字符)。 因此,如果存在任何扩展字符,我会检查该循环。

在所有这些过程中,搜索者建议在加密时在前面标记一个值,以便于检查。那会起作用的。

MarkJ 建议在显示或保存记录时设置未设置的公共布尔变量。可能会奏效。当然有效到足以试图反驳。

【讨论】:

【参考方案2】:

我将分享一个实践中的想法(不是我的)。当然,它可能不适用于您的情况,但还是看看吧。

前段时间在一个使用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

【讨论】:

【参考方案3】:

您说“客户端可以使用绑定表单上输入旁边的按钮来加密或解密名称。”你不能只跟踪按钮点击来确定数据是否加密吗?

只需使用模块级布尔变量 bIsEncrypted。首次加载表单时将为 False。在“加密/解密”按钮单击,只需执行“bEncrypted = Not bEncrypted”。因此,每次用户单击按钮时,值都会切换。

【讨论】:

是的。但我需要能够判断该值是否已加密,因为它显示在其他表单上。以搜索表格为例。但是,是的,切换按钮或布尔值是一种方法。 如你所说:如果其他表单直接从数据库中读取数据,它是加密的。如果他们从其他表单中读取它,他们可以检查布尔值(如果您将其公开) 嗯。不知道为什么我会回避这个。但是,你是对的。我在其他时候也使用过这种方法。现在,布尔值、ASCII 检查或 boojum 树方法是静音的,因为搜索表单必须搜索这些列,只输入普通文本(名字,姓氏)。

以上是关于如何判断保存的值是加密还是解密?的主要内容,如果未能解决你的问题,请参考以下文章

技术干货丨如何使对称加密“不对称”

如何修改form表单中的input值并加密

使用同一文件的校验和加密文件

JAVA AES CBC 加密 解密

加密中 公钥和私钥如何获得?

使用 encryptr R-package 保存和解密加密文件