首页
社区
课程
招聘
[求助]请教一段算法的逆运算[delphi]
发表于: 2008-11-17 16:53 7293

[求助]请教一段算法的逆运算[delphi]

2008-11-17 16:53
7293
这段代码是读取注册表对password键值的解密算法:

            size := Reg2.GetDataSize('Password');
            GetMem(buf, size);
            Reg2.ReadBinaryData('Password', buf^, size);
            i := 0;
            while i < size - 1 do
            begin
               password := password + chr(buf[i] xor mask[i]);
               Inc(i, 2);
            end;
更多的可以看690K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0p5J5x3$3u0G2K9$3g2Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3y4q4)9J5k6h3S2@1L8b7`.`. 这里,我找来的...
我想知道加密的算法是什么,麻烦给解释一下,其实这段解密的看的也不是很懂 先谢谢大家

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
一样
....
2008-11-17 18:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
什么一样? 拜托我没懂-_-! 哪位再来解释下~~
2008-11-17 18:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
难道是这段代码太简单没人看得上....?

555,难死我了...
2008-11-17 20:32
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
5
:= 是不是赋值? 还有password := password + chr...中的password是字符串变量吧,+就应该是字符串连接操作符吧。

如果我对Delphi的语法记忆没错的话,这就是一个简单异或过程。

sessiondiy说的一样,是说加密和解密使用同一个函数。
2008-11-17 21:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
可是得到的结果不一样哦~’

password为535han7m7d用这个加密后用这个函数解密得到的数据如图



要是还用这个函数加密,得到的完全不对...
上传的附件:
2008-11-17 22:24
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
7
算法是正确的.你的操作问题.

你输入的明文密码都是可打印的单字节字符.

而加密后的数据,音字节成了双字节,而且是二进制.

你把 54 d6 e7 ... 这个二进制值当成字串进行解密,当然不会得到正确的结果.

所说的算法一样,但还是得写一个不稍不同的代码来实现,虽然是用同一个组密钥来异或加密.

如果还不明白,请补习基础知识.仔细想看它解密过程,其中的 i += 2;和chr函数,你把这两个地方弄明白了就全明白了.

不要完全等别人的现成的结果.再说这本来就是个基础的算法.

作为一个编程爱好者,连这个异或都搞不定,岂不让人笑话.
2008-11-17 23:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
现在不是要解密,而是要把一段明文加密,加密正确与否的标准是用上面给出的那段是否能解密出来...可能是我太笨了...
2008-11-18 10:39
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
9
一樣
....
2008-11-18 10:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你太强悍了~~-_-!
2008-11-18 11:56
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
11
一样一样一样的
2008-11-18 11:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
有自杀的冲动了...这段代码琢磨几天了,没懂,来这里问的结果...汗...
2008-11-18 12:37
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
13
跟你开玩笑。

不过说实话,如果真连这个都搞不懂,那真得好好补补了。

给你个C++代码,自己琢磨吧。先加密,再解密,就是你给的那个代码;

        char        array[]={0x61, 0xD6, 0xD4, 0xE9, 0xDD, 0xF0, 0xFB, 0xF2, 0x5B, 0x64, 0x35, 0xAD, 0xB7, 0xC8, 0x19, 0x75, 0xEC, 0x31, 0x2B, 0xBC};
        std::string        key("535han7m7d");
        std::vector<char>        data;

        for ( int i = 0; i < key.length(); ++i)
        {
                data.push_back((char)( key[i] ^ array[2*i]) );
                data.push_back( 0x00 );
        }

        key="";

        for (int i = 0; i < data.size() - 1; i+=2 )
        {
                key += (char)(data[i] ^ array[i]);
        }

如果还看不明白,那就看书把自己累死吧
2008-11-18 13:26
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
因为我知道说得再多你也不懂
而且早已预言到最后酥胸会帮你写程式.
2008-11-18 17:42
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
15
你咋整的,我咋成“酥胸”了。。。

天啊,救命啊,我的名誉。。。。
2008-11-18 21:03
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
虽然名誉至上
还是膜拜酥胸
2008-11-19 08:30
0
游客
登录 | 注册 方可回帖
返回