Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解密加密值?_C#_Encryption_Character Encoding - Fatal编程技术网

C# 解密加密值?

C# 解密加密值?,c#,encryption,character-encoding,C#,Encryption,Character Encoding,我有一个旧的(我可以将其转换为Access 2007),其中包含超过200000条记录。该数据库有两列:第一列名为“Word”,第二列名为“Mean”。这是一个字典数据库,我的客户希望将这个旧数据库转换为ASP.NET和SQL 但是,我们不知道使用什么密钥或方法来加密或编码Unicode格式的“Mean”列。软件本身是用Delphi7编写的,我们没有源代码。我的客户端只知道登录数据库的凭据。问题是解码平均列 我所拥有的是已编译的windows应用程序和Paradox数据库。此软件可以解码每个“单

我有一个旧的(我可以将其转换为Access 2007),其中包含超过200000条记录。该数据库有两列:第一列名为“Word”,第二列名为“Mean”。这是一个字典数据库,我的客户希望将这个旧数据库转换为ASP.NET和SQL

但是,我们不知道使用什么密钥或方法来加密或编码Unicode格式的“Mean”列。软件本身是用Delphi7编写的,我们没有源代码。我的客户端只知道登录数据库的凭据。问题是解码平均列

我所拥有的是已编译的windows应用程序和Paradox数据库。此软件可以解码每个“单词”的“平均值”列,因此方法和/或键位于其自己的编译代码(.exe)或其目录中的一个文件中

例如,我们知道下一行中的“发酵术” 确切的意思是“㶪㶪㶪㶪㶪硂硂硂硂硂硂硂硂硂硂硂硂硂硂”因为应用程序是这样翻译的。以下是我在Access中打开数据库时记录的外观:

Word      Mean
Zymurgy   5OBnGguKPdDAd7L2lnvd9Lnf1mdd2zDBQRxngsCuirK5h91sVmy0kpRcue/+ql9ORmP99Mn/QZ4=
因此,我们试图发现平均值列中的值是如何转换为“平均值”的。我认为上面一行中的“Mean”列值是以Base64字符串格式编码的,但是解码Base64字符串还不能得到预期的文本

win应用程序目录中文件的扩展名为dll、CCC、DAT、exe(主应用程序文件除外)、SYS、FAM、MB、PX、TV、VAL

感谢您的任何帮助

下面是另外两个示例,请记住开始和结束处的双引号不是字符串的一部分:

word: "abdominal" 
coded value: "vwtj0bmj7jdF9SS8sbrIalBoKMDvTbpraFgG4gP/G9GLx5iU/E98rQ==" 
translation in Farsi: "شکمی, بطنی, وریدهای شکمی, ماهیان بطنی" 
word: "cart" 
coded value: "KHoCkDsIndb6OKjxVxsh+Ti+iA/ZqP9sz28e4/cQzMyLI+ToPbiLOaECWQ8XKXTz" 
translation in Farsi: "ارابه, گاری, دوچرخه, چرخ, با گاری بردن"
以下是不同编码的结果:

1- in unicode the result is: "ᩧ訋퀽矀箖�柖�섰᱁艧껀늊螹泝汖銴岔꫾也捆￉鹁" 
2- in utf32 the result is: "��������������" 
3- in utf7 the result is: "äàg\v=ÐÀw²ö{Ýô¹ßÖg]Û0ÁAgÀ®²¹ÝlVl´\\¹ïþª_NFcýôÉÿA" 
4- in utf8 the result is: "��g\v�=��w���{����g]�0�Ag��������lVl���\\����_NFc����A�" 
5- in 1256 the result is: "نàg\vٹ=ذہw²ِ–{فô¹كضg]غ0ءAg‚ہ®ٹ²¹‡فlVl´’”\\¹ï‏ھ_NFc‎ôةےA" 
然而,我发现paradox数据库系统在密钥管理方面非常复杂,大多数情况下密钥都是“复合密钥”,这就是它存在问题的原因,也是它被放弃的原因

更新:我正在尝试使用AutoIt v3实现自动化,因为据我所知,解密过程无法在一两天内完成。现在我有另一个问题,与文本/字体有关。当我将翻译后的文本复制到记事本时,它将变成一些无法识别的文本,除非我将记事本的字体更改为翻译软件的字体。如果我在记事本上用波斯语输入一些东西,不管我选择了什么字体,它都会正确地显示出来。更有趣的是,当我将文本复制到任何其他程序(如MS Office Word)时,无论我选择何种字体,它都会正确显示


那么我该如何解决这个问题呢?

使用类似ollydbg/softice的调试器。找到对平均值进行解码/编码的位置,然后逐一浏览指令,检查所有寄存器以了解执行的操作。我已经做了很多次了。这应该可以帮助您开始,因为您有一个能够解码这些内容的应用程序。你还有一个参考词。这就是你所需要的

还要考虑:Unicode可以是小端或大端。因此,您可以尝试交换字节。UTF-8可能是个难题,因为有些字存储为一个字节,有些则存储为两个字节


你也可以试着用波斯语中几乎相同的词来比较输出。如果有自定义代码页的话,这可能会导致重建自定义代码页。

在这种情况下,我会考虑编写一个脚本/程序,只需通过现有程序将所有数据提取出来

您可以编写一个应用程序,向应用程序发送按键,应用程序将依次选择和复制每个值

运行需要一段时间,但您可以让它过夜(您的数据库有多大?),它只需运行一次


我不知道这有多容易,因为我当然没有看过这个应用程序-这会有用吗?

你是如何从“win应用程序”中理解“发酵术”这个词的含义的?这看起来是一个不错的挑战。但是我们需要更多的信息。用十六进制对“Mean”字符串的base-64解码是什么?您希望使用什么unicode字符?(还有,这是编码/解码,不是加密/解密。)试试这个,然后将字符串保存在unicode文本文件中并查看结果。它不是utf8、utf16或三种常见的阿拉伯语编码中的任何一种。如果你试图从一个商业翻译应用程序中提取数据库,它很可能会被混淆。我注意到,当解码时,它的长度是8字节的倍数。所有条目都是8字节的倍数吗?我同意。如果数据库不是太大,这可能是最简单的解决方案。尝试刮取数据并简单地将其作为普通的旧Unicode(UTF16可能是这里最好的)写入新的数据库/表中。只要确保一切正常就行了。