基于“均态分布”随机数算法的一次性口令OneTimePassword(原创)
/* 所谓均态分布随机数算法是指:每个数(整数或实数)无序地分布在数轴上,值只出现一次永不重复。体现了香农的一次一密理论。
* 均体现在每个数的值是平均概率,即都有出现;态体现在每个数在数轴上的位置是惟一性。
* 有别于函数式伪随机数算法的缺陷:已经有文献说明,输出一亿个函数式伪随机数,就能估算它的算法了,即函数式伪随机数算法可以被破解。
* 均态分布随机数算法分为真均态分布随机数算法和伪均态分布随机数算法。
* 真均态分布随机数算法是一种接近自然随机数的算法,没有文献说明能被破解,即不可破解。因为数轴是无穷大的,根本不能出现重复的值,亦即不可循环。
* 伪均态分布随机数算法是有限的,值会重复,亦即会循环。那么就有可能被破解,只是暂时没有找到破解算法。
* 本程序算法是基于伪均态分布随机数算法,是本人原创首创独创。既可以用于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[i] = 32 + rand() % 95;
for(unsigned long long j = 0; j < i; ++j)
{
if(aucKeyTable[j] == aucKeyTable[i]) 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(%llu)\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;
}
基于“均态分布”随机数算法的一次性口令OneTimePassword(原创)的更多相关文章
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...
- 基于MeanShift的目标跟踪算法及实现
这次将介绍基于MeanShift的目标跟踪算法,首先谈谈简介,然后给出算法实现流程,最后实现了一个单目标跟踪的MeanShift算法[matlab/c两个版本] csdn贴公式比较烦,原谅我直接截图了 ...
- 基于面绘制的MC算法以及基于体绘制的 Ray-casting 实现Dicom图像的三维重建(python实现)
加入实验室后,经过张老师的介绍,有幸与某公司合共共同完成某个项目,在此项目中我主要负责的是三维 pdf 报告生成.Dicom图像上亮度.对比度调整以及 Dicom图像三维重建.今天主要介绍一下完成Di ...
- 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET
基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 于视觉信息的网页分块算法(VIPS) 2012-07-29 15:22 1233人阅读 评论(1) ...
- 基于FPGA的腐蚀膨胀算法实现
本篇文章我要写的是基于的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,,腐蚀在二值图像的基础上做"收缩"或"细化"操作,膨胀在二值图像的基础上做" ...
- 基于FPGA的肤色识别算法实现
大家好,给大家介绍一下,这是基于FPGA的肤色识别算法实现. 我们今天这篇文章有两个内容一是实现基于FPGA的彩色图片转灰度实现,然后在这个基础上实现基于FPGA的肤色检测算法实现. 将彩色图像转化为 ...
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- 基于RNN的音频降噪算法 (附完整C代码)
前几天无意间看到一个项目rnnoise. 项目地址: https://github.com/xiph/rnnoise 基于RNN的音频降噪算法. 采用的是 GRU/LSTM 模型. 阅读下训练代码,可 ...
- C语言生成32位和64位随机数算法
C语言生成32位和64位随机数算法 /** * randstd.h * * Standard definitions and types, Bob Jenkins * * 2015-01-19: re ...
随机推荐
- 给一个非矩形数组(Nonrectangular Arrays)
Nonrectangular Arrays(非矩形数组) public class Test { public static void main(String[] args) { ...
- 界面跳转+信息传递+AS中如何将ADV转移到其他盘中
今日所学:界面跳转 信息传递 遇到的问题: 昨天遇到不能新建java类,在网上百度了很多,大多原因是没有新建java类的模板,但是我有,换了一个新的新建的方式后,发现虽然能建立了,但在测试时还是不能页 ...
- 项目中常用到的布局 flex
1. 没header,footer固定 html<div class="page"> <div class="top"> <div ...
- Tsunami: A Learned Multi-dimensional Index for Correlated Data and Skewed Workloads 论文解读(VLDB 2021)
Tsunami: A Learned Multi-dimensional Index for Correlated Data and Skewed Workloads 论文解读(VLDB 2021) ...
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...
- springboot打包时候忽略编译测试类
方法1.可以在依赖中加入插件 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId ...
- Sqlalchemy异步操作不完全指北
异步SQLAlchemy SQLAlchemy作为一款通用的Python Orm工具,在最近的版本也支持了异步操作.但网上很多资料都不是很齐全,API也不是很好查询的情况下,我便有了整理一份基础文档的 ...
- android软件简约记账app开发day08-时间对话框的书写+改bug,改bug
android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...
- k8s client-go源码分析 informer源码分析(1)-概要分析
k8s informer概述 我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行L ...
- [报告] Microsoft :Application of deep learning methods in speech enhancement
Application of deep learning methods in speech enhancement 语音增强中的深度学习应用 按: 本文是DNS,AEC,PLC等国际级语音竞赛的主办 ...