吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3284|回复: 5
收起左侧

[C&C++ 转载] 随机数算法加解密的程序源码

  [复制链接]
Joduska 发表于 2019-7-4 10:33
本帖最后由 Joduska 于 2019-7-4 10:34 编辑

[C] 纯文本查看 复制代码
使用方法
     加密:OneBitOneCypher plaintext cyphertext password
     解密:OneBitOneCypher cyphertext plaintext password
*/
#include <stdio.h>
#include <stdlib.h>
// struct stat 结构的头文件。
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


int main(int argc, char *argv[])
{
// 取明文/密文的文件大小。
    struct stat statFileSize;
    stat(argv[1], &statFileSize);
    unsigned long ulFileSize = statFileSize.st_size;

    unsigned char *pucPlaintext_Cyphertext = malloc(ulFileSize);

// 取明文/密文的文件描述符。
    unsigned long ulPlaintext_CyphertextFD = open(argv[1], O_RDONLY, S_IRUSR | S_IWUSR);
    unsigned long ulCyphertext_PlaintextFD = open(argv[2], O_CREAT | O_WRONLY, S_IREAD | S_IWRITE);

// read API。
    read(ulPlaintext_CyphertextFD, pucPlaintext_Cyphertext, ulFileSize);

// 至少8个字符的密码(包括空格)
    unsigned char aucKeyTable[256], aucPassword[16];

    unsigned long i, j;

    for(i = 0; i < 256; ++i)
    {
Loop:
        aucKeyTable[i] = rand() & 255;

        for(j = 0; j < i; ++j)
        {
            if(aucKeyTable[j] == aucKeyTable[i])
            {
                goto Loop;
            }
        }
    }

    for(i = 0; argv[3][i]; ++i)
    {
        aucPassword[i] = argv[3][i];
    }

    srand(*((unsigned int*)aucPassword) % RAND_MAX);

    for(j = 0; j < ulFileSize; j += 256)
    {
        unsigned long k, l, ulTablePosition;

        for(k = 0; k < i; ++k)
        {
            ulTablePosition = aucPassword[k] % 256;

            aucPassword[k] = aucKeyTable[ulTablePosition];
        }

        if(!(j /256 % 2))
        {
            unsigned long *pulKeySwap1 = (unsigned long*)aucKeyTable, *pulKeySwap2 = (unsigned long*)aucKeyTable, ulKeyTemp;

            for(l = 0; l < 32; ++l)
            {
                ulTablePosition = aucPassword[l] % 32;

                if(l != ulTablePosition)
                {
                    ulKeyTemp = pulKeySwap1[l];

                    pulKeySwap1[l] = pulKeySwap2[ulTablePosition];

                    pulKeySwap2[ulTablePosition] = ulKeyTemp;
                }
            }
        }
        else
        {
            for(k = 0; k < 256; ++k)
            {
                ulTablePosition = rand() % 256;

                if(k != ulTablePosition)
                {
                    aucKeyTable[k] += aucKeyTable[ulTablePosition];

                    aucKeyTable[ulTablePosition] = aucKeyTable[k] - aucKeyTable[ulTablePosition];

                    aucKeyTable[k] -= aucKeyTable[ulTablePosition];
                }
            }
        }

        for(l = 0; l < 256; ++l)
        {
               pucPlaintext_Cyphertext[j + l] ^= aucKeyTable[l];
        }
    }

    write(ulCyphertext_PlaintextFD, pucPlaintext_Cyphertext, ulFileSize);

    return 0;
}



方法并不适用!只是分析出来给大家解密的!

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vectra + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

461735945 发表于 2019-7-4 10:38
谢谢楼主热心分享
shangziq 发表于 2019-7-4 11:00
 楼主| Joduska 发表于 2019-7-4 11:04
shangziq 发表于 2019-7-4 11:00
楼主写的很好,很精辟

看到你的头像还以为是lcg该回复了我。
94079490 发表于 2019-7-4 13:00
学习一下加密过程
92013 发表于 2019-7-4 13:48
看样子很6666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 08:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表