吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2555|回复: 7
收起左侧

[C&C++ 原创] 原创一次性口令(OneTimePassword)C语言源码

[复制链接]
ongp1347 发表于 2020-1-22 14:15
本帖最后由 ongp1347 于 2020-1-22 22:38 编辑

这是本人原创首创独创算法,技术是一种接近自然随机数算法:均态分布随机数算法(非正态分布/高斯分布随机数算法,更不是函数式伪随机数算法)。
可能是超简单、超快速、超高效的口令生成器。
欢迎各路加解密精英高手破解,如果您破解了,拜请通知我。

/* 所谓均态分布随机数算法是指:每个数(整数或实数)无序地分布在数轴上,值只出现一次永不重复。体现了香农的一次一密理论。
* 均体现在每个数的值是平均概率,即都有出现;态体现在每个数在数轴上的位置是惟一性。
* 有别于函数式伪随机数算法的缺陷:已经有文献说明,输出一亿个函数式伪随机数,就能估算它的算法了,即函数式伪随机数算法可以被破解。
* 均态分布随机数算法分为真均态分布随机数算法和伪均态分布随机数算法。
* 真均态分布随机数算法是一种接近自然随机数的算法,没有文献说明能被破解,即不可破解。因为数轴是无穷大的,根本不能出现重复的值,亦即不可循环。
* 伪均态分布随机数算法是有限的,值会重复,亦即会循环。那么就有可能被破解,只是暂时没有找到破解算法。
* 本程序算法是基于伪均态分布随机数算法,是本人原创首创独创。既可以用于SSH作为登入口令,又可以作加解密算法。
*/

// 在 X86_32/X86_64 平台上的 Windows 用 DevCPP 编译通过,在 X86_32/X86_64 平台上的 Linux、*BSD、MacOS 用 gcc 编译通过。
// 用法:(Windows)OneTimePassword password 或(Linux、*BSD、MacOS)./OneTimePassword password

#include    <stdio.h>
#include    <stdlib.h>
#include    <time.h>

#define    AMOUNT    64

int main(int argc, char *argv[])
{
// 95+1个可打印字符密码本
    unsigned char aucKeyTable[96];

// 这个字符任意
    aucKeyTable[95] = 36;

    srand((unsigned int)time(NULL));

// 用函数式伪随机数算法初始化密码本
    for(unsigned long long i = 0; i < 95; ++i)
    {
LOOP:
        aucKeyTable = 32 + rand() % 95;

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

    unsigned long long ulPasswordLength = -1;

// 口令任意长度,从一到无穷大均可。
    while(argv[1][++ulPasswordLength]);

    for(unsigned long long i = 1; i <= AMOUNT; ++i)
    {
// 输出口令
        for(unsigned long long j = 0; argv[1][j]; ++j)
        {
            argv[1][j] = aucKeyTable[argv[1][j] % 96];
        }

        printf("One Time Password(%lu)\t%s\n", i, argv[1]);

// 伪均态随机数算法,这个就是算法的核心。
        for(unsigned long long k = 0; k < 12; ++k)
        {
            unsigned long long ulKeyIndex, ulKeyTemp, *pulKeySwap1 = (unsigned long long*)aucKeyTable, *pulKeySwap2 = (unsigned long long*)aucKeyTable;

            if(i & 1)
            {
                ulKeyIndex = argv[1][k % ulPasswordLength] % 12;
            }
            else
            {
                ulKeyIndex = rand() % 12;
            }

            ulKeyTemp = pulKeySwap1[k];

            pulKeySwap1[k] = pulKeySwap2[ulKeyIndex];

            pulKeySwap2[ulKeyIndex] = ulKeyTemp;
        }
    }

    return 0;
}

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

生有涯知无涯 发表于 2020-1-22 16:30
SSH登录要么为对称加密,要么为非对称加密;从程序的内容和测试结果看,这是一个加密程序,可以把自己输入的字符串加密,这和“可应用于SSH作为登入口令”有什么关系吗?难道你这个程序比非对称加密还安全?
YUO8VP8Y2{R_B[R~HO8$XP8.png
生有涯知无涯 发表于 2020-1-22 16:33
这个程序用于SSH的具体应用场景可以讲清楚点吗
 楼主| ongp1347 发表于 2020-1-22 22:02
本帖最后由 ongp1347 于 2020-1-22 22:12 编辑
生有涯知无涯 发表于 2020-1-22 16:33
这个程序用于SSH的具体应用场景可以讲清楚点吗

你将这个SSH源码中的口令登入改为我的一次性口令登入。
因为口令是一次性的,每次都不同,只有你自己知道。
旧口令作废了,新口令可以作为远程登入SSH的口令,保密性超强。
建议:多了解一次性口令的原理和妙用
 楼主| ongp1347 发表于 2020-1-22 22:08
生有涯知无涯 发表于 2020-1-22 16:33
这个程序用于SSH的具体应用场景可以讲清楚点吗

你说得对,也可以作为加解密用。
我是一箭双雕、一石二鸟、一星两弹。
既可以做登入口令,又可以加解密。做加密,不是我夸口,可能要超算才能破了。哇哈哈!
 楼主| ongp1347 发表于 2020-1-22 22:10
热烈欢迎加解密破解精英高手们 Crack!
 楼主| ongp1347 发表于 2020-1-22 22:24
本帖最后由 ongp1347 于 2020-1-22 22:32 编辑

版主,我这个源码真的是原创。如果网上有雷同,就是我在2018年11月在 CSDN 上发布的。那个是旧版,我在贵网发布的是修订版。因为 CSDN 不许我重新发布修订版
我用的是最新科技成果——均态分布随机数算法,你可以到 Google、百度、Bing都搜索不到的,是毕业设计论文。
附注:严禁作为论文发表,本人已经作为毕业设计论文发表了。
生有涯知无涯 发表于 2020-1-23 15:06
还是不太明白你这个程序的优点。可以详细说说怎么用吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-23 17:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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