- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我们有一个带有可疑解密 key 的加密字节流。我想用 key 解密消息并验证结果。
如何验证结果?
关于纯文本的唯一已知的事情是它应该包含一个人类语言段落(一个或多个)。我们不能从这段文字中假设更多。
我想开发/使用一种算法来测试解密的输出并预测解密是否成功。
该算法必须适用于所有人类语言(不会特定于一种语言)。
这可能吗?你怎么看?
最佳答案
解密密文(加密)字节数组以获得明文(解密)字节数组。
如果使用经过身份验证的加密,则使用错误的 key 解密将彻底失败。
如果使用正确的填充 (PKCS#7/PKCS#5),则使用错误 key 解密失败的可能性非常高,因为填充将无法正确解密。
使用适当的字符编码和DecoderExceptionFallback
(Java 中的CodingErrorAction.REPORT
)将字节数组解码为字符数组。
如果解密的字节数组包含不代表有效字符的字节序列,则解码将失败。假设初始数据是采用相同编码的正确文本,只有在使用错误的 key 时,解密后的字节数组才会包含无效的字节序列。
实际上,前两步极有可能会暴露错误的 key 。
现在,在使用错误 key 并且解密奇迹般地导致正确填充数据并且解码数据仅包含所选字符编码的有效字节序列的不太可能的情况下,您有一个文本数据并且可以使用两个简单的(但仍然是经验主义的)不需要字典或在线访问的想法:
Unicode 通用类别属性对于确定字符类型非常有帮助,而无需特定于一种语言,并且大多数正则表达式实现允许根据 Unicode 类别指定正则表达式模式。
首先,按 Separator
和 Punctuation
Unicode 类别拆分文本。结果是一个没有空格和标点符号的“单词”列表。
其次,将每个单词与 Letter+
模式匹配。对于任何自然文本,匹配到不匹配的单词的比率都很高。对于专门构造的类似文本的乱码,它也可能很高,但对于随机字符序列,它肯定会很低。
关于c# - 人类语言测试算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140133/
有没有一种方法(程序、库)可以大致了解文档是用哪种语言编写的? 我有一堆混合语言的文本文档(~500K),需要导入支持 i18n 的 CMS (Drupal).. 我不需要完美的匹配,只需要一些猜测。
Closed. This question needs details or clarity。它当前不接受答案。
使用 UTF-8 编码。 (Multiple languages in one HTML page)。 跨不同浏览器(包括 iPad 上的 Safari)在单个网页上正确显示多种人类语言的最佳做法是什
我有一个完全可用的代码,它是为 Windows 编写的,是用 Visual Studio 构建的。 我想做的是为该软件添加另一种语言。我的想法是在窗口角落放置两个标志(一个英语和一个德语),并在用户点
我刚刚得到一个脚本,我想对其进行一些更改,我正在寻找某人为我开发一份自由职业,以使我将提供的加载字符串可读以进行编辑。 Lua代码是这样的: ------------------------- ENG
有没有不是简单逐字翻译的语言翻译项目?一个具有先进算法/设计的? 目前主流和流行的翻译软件,例如谷歌翻译,似乎是查找一个词或一组连续的词,然后将其直接翻译成不知何故确定为最佳匹配的内容。但是因为它不是
基于 Twilio 的人类/非人类检测 - 我正在尝试通过如下所示的代码来检测调用是否被人类或机器人接听 HashMap params = new HashMap(); params.put("Fro
这是目前(不确定)我能想到的处理多语言网站的最佳方式,它不涉及 gettext、zend_translate 或任何 php 插件或框架。 我认为它非常简单:我有 3 种语言,我将它们的“内容”写在不
我是一名优秀的程序员,十分优秀!