欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

续 (1千字)

续 (1千字)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
    char        UserName[128];
    char        UserString[8];
    char        a[8];
    int          index, len;
    char        k, j;
    signed long  temp, guess;
    char        SuccessCounter;
   
    do
    {
        printf("Input your name(at least 5 chars):");
        gets(UserName);
        len = strlen(UserName);
    } while(len < 5);
    strupr(UserName);
    index = 0;
    for(k = 0; k < 8; k++)
    {
        a[k]  = UserString[k] = UserName[index++];
        index %= len;
    }
    //下面用穷举求出变换前的8个字节
    SuccessCounter = 0;
    for(k = 0; k < 8; k++)
    {       
        for(guess = 0; guess <= 255; guess++)
        {
            temp = 1L;
            for(j = 7; j > 0; j--)
            {
                temp *= guess;
                if (temp > 0x00008899L)
                {
                    temp %= 0x00008899L;
                }
            }
   
            if ((temp % 0x000000BBL) == a[k])
            {
                SuccessCounter++;
                a[k] = guess;
                break;
            }
        }
    }
    //判断8个字节是否全部穷举成功
    if (SuccessCounter != 8)
    {
        printf("Guess failed.\n");
        exit(-1);
    }
    for(k = 0; k < 8; k++)
    {
        a[k] ^= (k + 0x50);
    }
    printf("Your registration key is: ");
    for(k = 0; k < 4; k++)
    {
        printf("%02X", a[k] & 0xFF);
    }
    printf("-");
    for(k = 4; k < 8; k++)
    {
        printf("%02X", a[k] & 0xFF);
    }
    printf("\n");
}
blowfish

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功
上一篇 前面被掏空啦
下一篇 改正后的